知識庫 / JSON RSS 訂閱

遍歷 org.json.JSONObject 實例

JSON
HongKong
5
09:54 PM · Dec 05 ,2025

1. 簡介

本教程將探討幾種遍歷 JSONObject 的方法。JSONObject 是一種簡單的 JSON 表示形式,用於 Java。

我們將首先介紹一種簡單的解決方案,然後探討一種更健壯的方法。

2. 遍歷一個 JSONObject

讓我們從遍歷鍵值對的簡單情況開始:

{
  "name": "Cake",
  "cakeId": "0001",
  "cakeShape": "Heart"
}

對於這一點,我們可以簡單地通過使用<em>keys()</em>方法迭代鍵:

void handleJSONObject(JSONObject jsonObject) {
    jsonObject.keys().forEachRemaining(key -> {
        Object value = jsonObject.get(key);
        logger.info("Key: {0}\tValue: {1}", key, value);
    }
}

以及我們的輸出將是:

Key: name      Value: Cake
Key: cakeId    Value: 0001
Key: cakeShape Value: Heart

3. 遍歷一個 JSONObject

假設我們有一個更復雜的結構:

{
  "batters": [
    {
      "type": "Regular",
      "id": "1001"
    },
    {
      "type": "Chocolate",
      "id": "1002"
    },
    {
      "type": "BlueBerry",
      "id": "1003"
    }
  ],
  "name": "Cake",
  "cakeId": "0001"
}

迭代遍歷鍵意味着什麼在這種情況下?

讓我們看看我們的樸素的 keys() 方法會給我們什麼結果:

Key: batters    Value: [{"type":"Regular","id":"1001"},{"type":"Chocolate","id":"1002"},
  {"type":"BlueBerry","id":"1003"}]
Key: name       Value: Cake
Key: cakeId     Value: 0001

這或許不太管用。我們似乎想要的是遍歷,而不是迭代。

遍歷一個 JSONObject 與遍歷 JSONObject 的鍵集是不同的。

為此,我們實際上還需要檢查值類型。 讓我們假設我們這樣做在一個單獨的方法中:

void handleValue(Object value) {
    if (value instanceof JSONObject) {
        handleJSONObject((JSONObject) value);
    } else if (value instanceof JSONArray) {
        handleJSONArray((JSONArray) value);
    } else {
        logger.info("Value: {0}", value);
    }
}

然後,我們的方法仍然相當相似:

void handleJSONObject(JSONObject jsonObject) {
    jsonObject.keys().forEachRemaining(key -> {
        Object value = jsonObject.get(key);
        logger.info("Key: {0}", key);
        handleValue(value);
    });
}

唯一需要考慮的是如何處理數組。

4. 遍歷JSONArray

讓我們採用類似的方式,使用迭代器。然而,我們不再調用keys(),而是調用iterator()

void handleJSONArray(JSONArray jsonArray) {
    jsonArray.iterator().forEachRemaining(element -> {
        handleValue(element)
    });
}

現在,這個解決方案是有侷限性的,因為我們同時使用了遍歷和想要執行的操作。 採用一種常見的方法來分離這兩個操作是使用訪問者模式。

5. 結論

在本文中,我們瞭解到一種遍歷 JSONObject 的方法,用於處理簡單的鍵值對,並探討了複雜結構帶來的問題,以及一種用於解決這些問題的遍歷技術。

當然,這是一種深度優先遍歷方法,但我們可以類似地使用廣度優先遍歷

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.