我在尝试解析之前使用 Jackson 生成的一些 JSON 时收到此错误。我像这样生成 JSON
String ret = "";
ret = mapper.writeValueAsString(message.getPayload());
message.setPayload(ret);
其中 message.getPayload() 是一个 HashMap,在本例中包含两个字符串和一个各种对象的 List。这会创建以下格式错误的 JSON
{
"user" : "john d example",
"items" : [ {
"val" : 99.5,
"id" : "phone",
"qty" : 1
}, {
"val" : 15.5,
"id" : "wine",
"qty" : 4
} ],
"address" : "123 example street"
}
这样检查时会抛出异常
Map<String, Object> ret = new HashMap<String, Object>();
String s = (String)message.getPayload();
ret = mapper.readValue(s, new TypeReference<Map<String, String>>(){});
我应该如何正确地将这个Map写入JSON?
最佳答案
TypeReference<Map<String, String>>
应该是TypeReference<Map<String, Object>>
。 Jackson 尝试将值解析为字符串而不是列表,因为这是它根据您传入的 TypeReference 所期望的。
关于java - Jackson:无法反序列化 START_ARRAY 中的对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639521/