当前位置: 首页 > 知识库问答 >
问题:

JSONMappingException:无法反序列化START_OBJECT令牌外的java.util.List实例

锺离声
2023-03-14

下面有一个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:Can not deserialize instance of java.util.list out of START_OBJECT token”时,我的声明是否错误?

解析逻辑如下:

jsonMapper.readValue(responseJSONString, new TypeReference<List<Response>>() {});

共有1个答案

纪佐
2023-03-14

首先,您的输入以“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
        }
    }
]

^
|
 类似资料: