gpt4 book ai didi

java - 在没有 GSON 的 Java 中将 JSONArray 转换为 List>

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:38 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com