我遇到了一段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<HashMap<String, String>> 的串列?
uj5u.com熱心網友回復:
您可以將 JacksonObjectMapper與 一起使用TypeReference,首先您需要將其讀取為 Map<String,Object> 然后您可以使用 Java 提取名稱和數字。
你需要得到data來自obj然后在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為資料創建一個,它會更容易一些。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366633.html
下一篇:R-查詢JSON并保存到變數
