java - JsonMappingException : Can not deserialize instance of java. util.List 超出 START_OBJECT token

标签 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;

以及它们的 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/

相关文章:

java - Couchbase UPDATE 未更新所有匹配过滤器的文档?

java - Jackson json 转对象

Java SwingUtilities.invokeLater 更新 TextArea

java - 检查一个数组列表中是否存在另一个数组列表中的任何元素并打印相同的元素

java - Jersey JSON 从驼峰大小写转换为下划线(蛇形大小写)

java - 如何使用 jersey REST 客户端发送包含 JSON 格式的 dom 元素的请求

java - 请求帮助解决 com.fasterxml.jackson.databind.JsonMappingException : Infinite recursion

kotlin - 假装 jackson 日期时间JsonMappingException

java - Intellij 上的 Glassfish 配置

java - 如何在 Payara Server 中禁用 HTTP OPTIONS 方法?