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

Jackson:无法反序列化START_ARRAY之外的对象实例

范翰海
2023-03-14

当我试图解析以前用Jackson生成的一些JSON时,我得到了这个错误。我像这样生成JSON

String ret = "";
ret = mapper.writeValueAsString(message.getPayload());
message.setPayload(ret);

其中Message.getPayload()是一个HashMap,在这个实例中包含两个字符串和一个各种对象的列表。这将创建以下格式错误的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>>(){});

共有1个答案

严修谨
2023-03-14

typereference > map应为typereference > 。Jackson试图将值解析为字符串而不是列表,因为这是基于您传入的类型推理所期望的。

 类似资料: