杰克逊错误意外字符("}"(代码 125))



嘿,我遇到了一个基于杰克逊反序列化的问题,这是我尝试过的和我得到的错误。

错误:com.fasterxml.jackson.core.JsonParseException:意外字符("}"(代码 125)):期望双引号开始字段名称

爪哇代码

List<Contact> ds = mapper.readValue(data, mapper.getTypeFactory().constructCollectionType(List.class, Contact.class));
 //OR this one
List<Contact> ds = mapper.readValue(data, new TypeReference<List<Contact>>() {});

我的杰伦

[   
    {
        "id": "200",
        "name": "Alexia Milano",
        "email": "minalo@gmail.com",
        "prenom": "xx-xx-xxxx,x - street, x - country",
    }, {
        "id": "201",
        "name": "Johnny Depp",
        "email": "johnny_depp@gmail.com",
        "prenom": "xx-xx-xxxx,x - street, x - country",
    }
]

如果使用 json 验证器,则可以看到更详细的错误消息:

Parse error on line 6:
...ntry",            },    {        "id
---------------------^
Expecting 'STRING'

"xx-xx-xxxx,x - street, x - country"之后有额外的逗号.如果从两个位置删除它,则具有有效的 JSON 和杰克逊解析工作。

这是因为您的最后一个条目,在您的最后一个值之后有一个,。这就是为什么杰克逊期待另一个领域。

您可以启用ALLOW_TRAILING_COMMA(允许在对象或数组中的最后一个值之后使用逗号),然后它会正确解析它,而不必修改 json 并删除逗号:

jsonFactory.configure(JsonReadFeature.ALLOW_TRAILING_COMMA.mappedFeature(), true)

相关内容

最新更新