JsonMappingException:无法从START_OBJECT标记中反序列化java.util.List的实例

时间:2014-10-09 19:14:01

标签: java jackson

我有一个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>>() {});

知道我犯了什么错误吗?

1 个答案:

答案 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}}