如何使用杰克逊将 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
}
我需要 name
和 num
。如何使用 Jackson 将其转换为 java.util.List> 的列表?
您可以将 Jackson ObjectMapper
与 TypeReference
一起使用,
首先,您需要将其读取为 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
,那就更容易了。
我遇到了一块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
}
我需要 name
和 num
。如何使用 Jackson 将其转换为 java.util.List
您可以将 Jackson ObjectMapper
与 TypeReference
一起使用,
首先,您需要将其读取为 Map
您需要从 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
,那就更容易了。