我在下面有一个 JSON,我正在尝试使用 Jackson 将其解析为 POJO
{
"Response": {
"userIds": [
"http://example.com:10249/User/526241869918679991"
],
"userGroupIds": [
"http://example.com:10249/UserGroup/1056659494710887089"
],
"accountIds": [
"http://example.com:10249/ServiceAccount/3354613317986071030"
],
"success": true
}
}
我的响应 POJO 片段如下
private boolean success;
private List<String> accountIds;
private List<String> userIds;
private List<String> userGroupIds;
以及它们的 getter 和 setter
我的声明是否错误,因为我在解析时遇到“org.codehaus.jackson.map.JsonMappingException:无法从 START_OBJECT token 中反序列化 java.util.List 的实例”错误
解析逻辑如下:
jsonMapper.readValue(responseJSONString, new TypeReference<List<Response>>() {});
知道我在哪里犯了错误吗?
最佳答案
首先,您的输入以 "Response": ...
开头,它必须对应于某个对象中的字段。所以你所拥有的是 Response
容器的 json 表示:
class ResponseContainer {
Response Response;
}
其次,您尝试解析一个列表,但您的输入不是以[
(哪个列表应该以)开头,而是以{
这表明它是一个对象。因此,如果您希望它是一个列表,请将输入包装在 [ ... ]
中:
因此要么将您的输入更改为列表:
|
V
[
{
"Response": {
"userIds": [
"http://example.com:10249/User/526241869918679991"
],
"userGroupIds": [
"http://example.com:10249/UserGroup/1056659494710887089"
],
"accountIds": [
"http://example.com:10249/ServiceAccount/3354613317986071030"
],
"success": true
}
}
]
^
|
关于java - JsonMappingException : Can not deserialize instance of java. util.List 超出 START_OBJECT token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26286227/