[英]trying to Map my Json String data to an object. I'm using Gson to parse the data. Data get parsed but when i give Space in Value it gives me Exception
异常 - com.google.gson.stream.MalformedJsonException:第 1 行第 26 列路径 $.[0].STATE 的未终止对象"
这是我的帖子请求。 其中数据是对象,id 和资源是字符串
private String id;
private String resourceName;
private Object data;
{
"id": "150",
"resourceName": "Fabrik-Resource",
"data": {
"RECORD": [
{
"STATE": "TORONTO CITY"
},
{
"WORK": "SERVICE"
}
]
}
}
Now if i give Space between TORONTO CITY
,它会给我一个例外
com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 26 path $.[0].STATE"
但是当我发送没有空格的请求作为键和值时,例如-
"RECORD": [
{
"STATE": "TORONTOCITY"
},
{
"WORK": "SERVICE"
}
]
}
它有效,但不适用于 Space
代码 -
public ResponseEntity<MasterBlockChainResponse> dummy(@RequestBody(required=false) Masterpayload valueobject) {
Gson gson = new Gson();
MasterBlockChainResponse response = new MasterBlockChainResponse();
Object json = valueobject.getData();
Map<String, Object> map = gson.fromJson(json.toString(), Map.class);
response.setId(valueobject.getId());
response.setResourceName(valueobject.getResourceName());
response.setData(map);
return ResponseEntity.status(HttpStatus.OK).body(response);
}
您的对象数据是一个简单的对象,因为您需要这样的数据进行解析:
Data{
List<String> RECORD;
}
所以你的主要课程:
Class{
String id;
String resourceName;
Data data;
}
而不是地图键值。 这样你就不应该有任何问题
嗨,这是因为这条线:
Map<String, Object> map = gson.fromJson(json.toString(), Map.class);
当您使用 toString 方法时,它不会将对象转换为合法的 JSON 对象,请尝试使用 ObjectMapper。 IE
Map<String, Object> map = gson.fromJson(objectMapper.writeValueAsString(json), Map.class);
快速比较差异:
{记录=[{州=多伦多市},{工作=服务}]}
{"RECORD":[{"STATE":"TORONTO CITY"},{"WORK":"SERVICE"}]}
代码片段:
Gson gson = new Gson();
Object json = valueobject.getData(); //{RECORD=[{STATE=TORONTO CITY}, {WORK=SERVICE}]}
String jsonString = gson.toJson(json); //{"RECORD":[{"STATE":"TORONTO CITY"},{"WORK":"SERVICE"}]}
Map<String, Object> map = gson.fromJson(jsonString, Map.class); //{RECORD=[{STATE=TORONTO CITY}, {WORK=SERVICE}]}
ArrayList x = (ArrayList) map.get("RECORD");
x.get(0); //{STATE=TORONTO CITY}
x.get(1); //{WORK=SERVICE}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.