JSON解析与杰克逊
问题描述:
下面我有,我试图解析使用杰克逊JSON解析与杰克逊
一个POJO一个JSON{
"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标记的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
}
}
]
^
|
你的JSON数组反应容器阵列,而不是一个数组响应。 – 2014-10-09 19:29:59
W 0123。谢谢。我会修改。 – aioobe 2014-10-09 19:38:37