如何使用Jackson通过动态密钥反序列化JSON文档?

时间:2017-06-05 12:53:32

标签: json jackson

我有一个JSON格式的字符串,密钥是一个随机数。

{
  "tasks": {
    "0": {
     "key1": "value1"
    },
    "100": {
      "key1": "value2"
    }
}

如何使用 Jackson 将其转换为Java对象?

如何定义Java类以便我可以像这样使用 Jackson

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.readValue(myStr, XXXX);

1 个答案:

答案 0 :(得分:0)

根据您的需要,您可以使用几种方法:

使用JsonNode

您可以将JSON解析为Jackson树模型。也就是说,从JsonNode包中加入com.fasterxml.jackson.databind

ObjectMapper mapper = new ObjectMapper();
JsonNode tree = mapper.readTree(json);

您也可以使用Jackson将JsonNode解析为POJO:

MyBean bean = mapper.treeToValue(jsonNode, MyBean.class);

使用Map<String, Object>

根据您的要求,您可以使用Map<String, Object>代替JsonNode

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> parsed = mapper.readValue(json, 
                                 new TypeReference<Map<String, Object>>() {});

要将地图转换为POJO,请使用:

MyBean bean = mapper.convertValue(map, MyBean.class);