java - Jackson:无法反序列化 START_ARRAY 中的对象实例

标签 java json jackson

我在尝试解析之前使用 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/

相关文章:

java - 来自 Google Appengine for Java 的 PDF 报告

java - 如何使用 Jackson 以自定义方式实例化 bean?

java - 使用 Jackson 反序列化可选多态字段

Java:JSONObject继承

java - Jackson/JSON 的不良用例是什么?

java - Mule ESB REST 测试(curl 和 Eclipse)

java - 关于扫描仪、文件编写器和 getClass().getResource() 的混淆

java - Spring Security 更改重定向 URL 以使用 HTTPS 而不是 HTTP

json - 错误序列化

php - 在 Android 中对 Json 输出进行排序