我有一个来自JSONArray
的{{1}},我想将其转换为net.minidev.json
。
使用List<HashMap<String,Object>>
转换JSONArray
有很多答案。
但是,我无法将Gson
作为对我的Gson
的依赖关系,因此我正在寻找一种使用 Java-8 功能实现此目标的方法。
我的pom.xml
是这样的:它包含多个层次结构。
JSONArray
我想在List中实现相同的结构
我尝试通过将JSONArray的每个元素转换为每个[
{
"data": {
"name": "idris"
},
"children": [
{
"processStandardDeduction": 69394,
"cropId": 1,
"data": null,
"expectedQuantityPerAcre": 1220,
"name": "Red Tomato 1 quality",
"id": 1003,
"autoArchivePlotDays": 59902
},
{
"processStandardDeduction": 69394,
"cropId": 1,
"autoArchivePlotDays": 59902
},
{
"processStandardDeduction": 69394,
"cropId": 1,
"autoArchivePlotDays": 59902
}
],
"name": "Red Tomato",
"id": 1002
},
{
"data": null,
"name": "Red Tomato 1 quality",
"id": 1003,
"processStandardDeduction": 69394,
"cropId": 1,
"expectedQuantityPerAcre": 1220,
"cropName": "Tomato",
"autoArchivePlotDays": 59902
},
{
"data": null,
"name": "Red Tomato 3 quality",
"id": 1001,
"processStandardDeduction": 69394,
"autoArchivePlotDays": 59902
},
{
"processStandardDeduction": 69394,
"cropId": 1,
"data": null,
"id": 1004,
"autoArchivePlotDays": 59902
}
]
然后将其添加到HashMap<String,Object>
来循环。
List<HashMap<String,Object>>
我想尝试使用 Java-8功能 而不使用forEach的更好的方法。 提前致谢。
答案 0 :(得分:2)
如果您将此JSON
作为String
,则可以使用ObjectMapper.readValue
方法
readValue(String content, TypeReference valueTypeRef)
代码
List<HashMap<String, Object>> cropDetailsList = mapper.readValue(jsonString,
new TypeReference<List<HashMap<String, Object>>>(){});
如果要迭代JSONArray
List<HashMap<String, Object>> cropDetailsList = cropDetails.stream()
.map(eachCropJson->(HashMap<String, Object>) mapper.convertValue(eachCropJson, HashMap.class))
.collect(Collectors.toList());
答案 1 :(得分:1)
使用流可以做到
List<HashMap<String, Object>> output = cropDetails.toList().stream().map(m -> ((HashMap<String, Object>) m)).collect(Collectors.toList());