我有一个 JSONArray
来自 net.minidev.json
我想将其转换为 List<HashMap<String,Object>>
.
转换 JSONArray
有很多答案使用 Gson
.
但是,我无法添加 Gson
作为对我的 pom.xml
的依赖,所以我正在寻找一种使用 Java-8 功能实现它的方法。
我的 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
}
]
我想在列表中实现相同的结构>
我尝试通过将 JSONArray 的每个元素转换为每个 HashMap<String,Object>
来循环它然后将其添加到 List<HashMap<String,Object>>
.
ObjectMapper mapper = new ObjectMapper();
List<HashMap<String, Object>> cropDetailsList = new ArrayList<>();
for (Object eachCropJson : cropDetails) { //cropDetails is the JSONArray
HashMap<String, Object> eachCropMap = (HashMap<String, Object>) mapper.convertValue(eachCropJson,
HashMap.class);
cropDetailsList.add(eachCropMap);
}
return cropDetailsList;
我想在不使用 forEach 的情况下尝试使用 Java-8 功能 的更好方法。 提前致谢。
最佳答案
如果你得到这个 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());
关于java - 在没有 GSON 的 Java 中将 JSONArray 转换为 List<HashMap<String,Object>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57160533/