繁体   English   中英

如何使用 jackson 将 json 转换为列表/映射

[英]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<HashMap<String, String>> 的列表?

您可以将 Jackson ObjectMapperTypeReference一起使用,首先您需要将其读取为 Map<String,Object> 然后您可以使用 Java 提取名称和编号。

您需要从obj获取data ,然后对于 dataList 中的每个项目,您必须将其 map 转换为新的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会更容易一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM