如何使用杰克逊将 json 转换为 list/map

how to convert json to list/map with jackson

我遇到了一块json如下:

{
  "code": 1,
  "msg": "query success",
  "obj": {
    "data": [
      {
        "name": "",
        "value": {
          "num": "89"
        }
      },
      {
        "name": "1",
        "value": {
          "num": "19"
        }
      },
      {
        "name": "2",
        "value": {
          "num": "6"
        }
      }
    ]
  },
  "success": true,
  "duration": 523
}

我需要 namenum。如何使用 Jackson 将其转换为 java.util.List> 的列表?

您可以将 Jackson ObjectMapperTypeReference 一起使用, 首先,您需要将其读取为 Map 然后您可以使用 Java.

提取名称和编号

您需要从 obj 获取 data,然后对于数据列表中的每个项目,您必须将其映射到新的 HashMap,如下所示

ObjectMapper objectMapper = new ObjectMapper ();
Map<String,Object> jsonMap = objectMapper.readValue(jsonData,new TypeReference<Map<String,Object>>(){});
List<Object> data = ((Map<String,Object>)jsonMap.get("obj")).get("data");
List<Map<String,String> result = data.stream()
   .map(d->(Map<String,Object> d)
   .map(d->{
      Map<String,String> map = new HashMap();
      map.put(d.get("name"),((Map<String,String>)d.get("value")).get("num"));
      return map;
      })
   .collect(Collectors.toList());

但是,如果您可以为数据创建一个 class,那就更容易了。