我在尝试解析以前用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>>(){});
我应该如何正确地将此地图写入JSON?
答案 0 :(得分:2)
TypeReference<Map<String, String>>
应为TypeReference<Map<String, Object>>
。 Jackson试图将值解析为字符串而不是列表,因为这是基于您传入的TypeReference所期望的值。