【问题标题】:how to convert json to list/map with jackson如何使用杰克逊将 json 转换为列表/地图
【发布时间】:2022-01-03 09:25:58
【问题描述】:

我遇到了一段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> 列表?

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多