我有一个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;
和他们的吸气者和二传手
我的声明是错误的,因为我得到了“org.codehaus.jackson.map.JsonMappingException:无法反序列化java.util.List中的START_OBJECT标记实例”错误“
解析逻辑如下:
jsonMapper.readValue(responseJSONString, new TypeReference<List<Response>>() {});
知道我犯了什么错误吗?
答案 0 :(得分:3)
首先,您的输入以"Response": ...
开头,Response
必须与某个对象中的字段对应。那么你所拥有的是class ResponseContainer {
Response Response;
}
容器的json表示:
[
其次,您尝试解析列表,但您的输入并不是以{
开头(列表应该从哪个开始),而[ ... ]
表示它& #39;是对象。因此,如果您希望它成为一个列表,请将输入包装在|
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
}
}
]
^
|
:
因此要么将输入更改为列表:
{{1}}