知識庫 / JSON RSS 訂閱

從JSONArray中按鍵獲取值

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

1. 概述

JSON 是一種輕量級且與語言無關的數據交換格式,廣泛用於客户端服務器之間的通信。

JSONObjectJSONArray 是通常在大多數 JSON 處理庫中可用的兩個常見類。JSONObject 存儲無序的鍵值對,類似於 Java 中的 Map 實現。JSONArray 則是一個有序的值序列,類似於 Java 中的 ListVector

在本教程中,我們將使用 JSON-Java (org.json) 庫,並學習如何處理 JSONArray 以提取給定鍵的值。如果需要,我們提供了一個該庫的介紹。

2. Maven 依賴

我們將首先在我們的 POM 中添加以下依賴:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20240303</version>
</dependency>

我們可以在 JSON-Java 的最新版本上找到 Maven Central

3. 構建上下文

一個 JSON 消息通常由 JSON 對象和數組組成,這些對象和數組可能嵌套在彼此之中。<em >JSONArray</em > 對象被包含在方括號 <em >[ ]</em > 中,而 <em >JSONObject</em >> 則被包含在花括號{}` 中。例如,讓我們考慮以下 JSON 消息:

[
    {
        "name": "John",
        "city": "chicago",
        "age": "22"
    },
    {
        "name": "Gary",
        "city": "florida",
        "age": "35"
    },
    {
        "name": "Selena",
        "city": "vegas",
        "age": "18"
    }
]

顯然,這是一個包含 JSON 對象數組。數組中的每個 JSON 對象代表我們的客户記錄,其屬性或鍵包括姓名、年齡城市

4. 處理 JSONArray

鑑於上述 JSON 數據,如果我們想要查找所有客户的姓名,換句話説,給定一個鍵,“name”(在我們的示例中)如何在給定 JSON 數組中查找與該鍵關聯的所有值?

正如我們所知,JSONArray 是 JSON 對象列表。因此,讓我們查找給定鍵的所有值:

public List<String> getValuesForGivenKey(String jsonArrayStr, String key) {
    JSONArray jsonArray = new JSONArray(jsonArrayStr);
    return IntStream.range(0, jsonArray.length())
      .mapToObj(index -> ((JSONObject)jsonArray.get(index)).optString(key))
      .collect(Collectors.toList());
}

在之前的示例中:

  • 首先,我們遍歷 JSON 數組中的所有對象
  • 然後,對於每個 JSONObject,我們獲取映射到給定鍵的值

此外,方法 optString() 在未找到該鍵時返回一個空字符串。

調用方法 getValuesForGivenKey(jsonArrayStr, “name”),其中 jsonArrayStr 是我們的示例 JSON,將返回一個包含所有名稱的 List

[John, Gary, Selena]

5. 結論

在本文中,我們學習瞭如何解析 JSONArray 以獲取給定鍵的所有映射值。這裏我們使用了 JSON-Java (org.json) 庫。

JSON.simple 也是另一種類似且功能強大的 Java 中處理 JSON 的替代方案。歡迎探索。

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

發佈 評論

Some HTML is okay.