欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java遞歸輪詢json和值路徑

陳思宇1年前7瀏覽0評論

在Java中遞歸輪詢json和值路徑是一種常見的操作。本文將探討如何使用Java中的遞歸函數來遍歷json對象,并查找特定的值路徑。

public static void recursiveTraversal(JSONObject jsonObj, String keyPath, String value) {
for (String key : jsonObj.keySet()) {
Object obj = jsonObj.get(key);
if (obj instanceof JSONObject) {
recursiveTraversal((JSONObject) obj, keyPath + "." + key, value);
} else if (obj instanceof JSONArray) {
JSONArray arr = (JSONArray) obj;
for (int i = 0; i< arr.length(); i++) {
recursiveTraversal(arr.getJSONObject(i), keyPath + "." + key + "[" + i + "]", value);
}
} else {
if (key.equals(keyPath) && obj.equals(value)) {
System.out.println(keyPath + " = " + value);
}
}
}
}

上述代碼中的遞歸函數將逐層遍歷json對象,對于每個對象,通過判斷其是否為JSONObject或JSONArray,再進行遞歸調用或循環調用,直到找到特定的值路徑。對于找到的值路徑,我們可以將其打印出來或進行其他相應的處理。

下面我們以一個簡單的json字符串作為例子:

{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"state": "NY",
"zip": "10001"
},
"phoneNumbers": [
{
"type": "home",
"number": "555-555-5555"
},
{
"type": "work",
"number": "444-444-4444"
}
]
}

我們想要查找值路徑為address.city的具體值,可以這樣調用遞歸函數:

JSONObject jsonObj = new JSONObject(jsonStr);
recursiveTraversal(jsonObj, "address.city", null);

同樣,如果我們想要查找值路徑為phoneNumbers[0].number的具體值,可以這樣調用遞歸函數:

recursiveTraversal(jsonObj, "phoneNumbers[0].number", null);

上述代碼中的第三個參數為null,表示我們只需要查找值路徑對應的具體值,不需要進行其他處理。當然,如果有需要,我們也可以在遞歸函數中添加相應的操作。