gpt4 book ai didi

java - 递归解析 JSON 对象 - Java

转载 作者:行者123 更新时间:2023-11-30 02:53:46 25 4
gpt4 key购买 nike

我有一个包含对象列表的 JSON,列表中的任何项目都可以具有 null 或相同的对象作为键的值。我正在寻找一种更快的方法来解析 json 以得出最终结果。数据结构看起来像 -

[
{
"firstName": "Bruce",
"familyMembers": null
},
{
"firstName": "Gates Family",
"familyMembers": [
{
"firstName": "Bill",
"familyMembers": null
},
{
"firstName": "Steve",
"familyMembers": null
}
]
},
{
"firstName": "Lee",
"familyMembers": null
},
{
"firstName": "Chan",
"familyMembers": null
}
]

输出应该是一个集合 = ("Bruce", "Bill", "Steve", "Lee", "Chan")。

我正在寻找一种在 Java 中执行此操作的最佳方法,这样我就不会因陷入解析 hell 而增加响应时间。感谢您在这方面花费的时间。

最佳答案

尝试我的递归实现。

public static void jsonArrayToSet(JSONArray jAry, Set<String> result, String targetKey, String subArrayKey, boolean includeNode){
try {
for (int i = 0; i < jAry.length(); i++) {
JSONObject jObj = jAry.getJSONObject(i);
boolean hasSubArray = false;
JSONArray subArray = null;
if(jObj.has(subArrayKey)){
Object possibleSubArray = jObj.get(subArrayKey);
if(possibleSubArray instanceof JSONArray){
hasSubArray = true;
subArray = (JSONArray) possibleSubArray;
}
}
if(hasSubArray){
if(includeNode){
result.add(jObj.getString(targetKey));
}
jsonArrayToSet(subArray, result, targetKey, subArrayKey, includeNode);
} else {
result.add(jObj.getString(targetKey));
}
}
} catch (JSONException e){
e.printStackTrace();
}
}

jAry:源JSONArray

result:您要写入的Set

targetKey:映射到要添加到结果的条目的键。

subArrayKey:映射到子JSONArray的键。

includeNode:当前JSONOnject为包含子数组的节点时,是否添加到result中。

根据您的情况,您可以调用:

jsonArrayToSet(yourJsonArray, yourSet, "firstName", "familyMembers", false);

关于java - 递归解析 JSON 对象 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37848106/

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