知識庫 / Java Map RSS 訂閱

將哈希映射轉換為 Java 中的 JSON 對象

Java Map,JSON
HongKong
5
09:46 PM · Dec 05 ,2025

1. 簡介

在 Java 中,<em >HashMap</em > 是一種廣泛使用的數據結構,我們可以使用它來以鍵值對的方式存儲數據。另一方面,JSON(JavaScript Object Notation)是一種流行的互聯數據格式,通常用於在服務器和 Web 應用程序之間傳輸數據。

在現代軟件開發中,經常會遇到數據需要轉換成不同格式的情況。 這種情況下,將 `Map> 轉換為 JSON 格式就是一個典型例子。

在本教程中,我們將探索三種將 `Map> 轉換為 JSON 格式的方法。

2. 地圖示例及預期 JSON 輸出

讓我們考慮以下地圖示例:

Map<String, String> data = new HashMap<>();
data.put("CS", "Post1");
data.put("Linux", "Post1");
data.put("Kotlin", "Post1");
{
  "title": "The expected JSON output should be as follows:",
  "content": [
    {
      "type": "paragraph",
      "text": "The expected JSON output should be as follows:"
    }
  ]
}
{
  "CS": Post1,
  "Linux": Post1,
  "Kotlin": Post1
}

3. 使用 Jackson 將 Java Map 轉換為 JSON

Jackson 是我們使用時最流行的 Java 庫之一,它為 JSON 解析、生成和數據綁定提供了強大的功能。

要使用 Jackson 將 Map 轉換為 JSON,請在我們的 pom.xml 文件中包含 jackson-databind 依賴項:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.16.0</version>
</dependency>
<p>在包含依賴項後,我們可以定義一個測試函數,使用 Jackson 將一個 <em >Map</em> 轉換為 JSON:</p>
String originalJsonData = "{\"CS\":\"Post1\",\"Linux\":\"Post1\",\"Kotlin\":\"Post1\"}";
@Test
public void given_HashMapData_whenUsingJackson_thenConvertToJson() throws JsonProcessingException {
    Map<String, String> data = new HashMap();
    data.put("CS", "Post1");
    data.put("Linux", "Post1");
    data.put("Kotlin", "Post1");
    ObjectMapper objectMapper = new ObjectMapper();
    String jacksonData = objectMapper.writeValueAsString(data);
    Assertions.assertEquals(jacksonData, originalJsonData);
}

在上述代碼片段中,我們創建了一個 HashMap 對象並添加了鍵值對。 此外,我們使用了 Jackson 的 ObjectMapperHashMap 轉換為 JSON 字符串,幷包含了斷言以驗證轉換的成功性。

4. 使用 Gson 將 Java Map 轉換為 JSON

Gson 是另一個流行的 Java 庫,我們可以使用它將 Map 轉換為 JSON,反之亦然。它提供了一個簡單直觀的 JSON 處理 API。

首先,我們應該在我們的 pom.xml 文件中包含以下 gson 依賴項:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.11.0</version>
</dependency>

一旦我們包含了 Gson 依賴項,就可以定義一個測試函數,使用 Jackson 將一個 Map 轉換為 JSON:

@Test
public void given_HashMapData_whenUsingGson_thenConvertToJson() {
    Map<String, String> data = new HashMap<>();
    data.put("CS", "Post1");
    data.put("Linux", "Post1");
    data.put("Kotlin", "Post1");
    Gson gson = new Gson();
    Type typeObject = new TypeToken<HashMap>() {}.getType();
    String gsonData = gson.toJson(data, typeObject);
    Assertions.assertEquals(gsonData, originalJsonData);
}

上述代碼片段代表一個 JUnit 測試方法,它使用 Gson 庫將包含鍵值對的 HashMap 轉換為 JSON 字符串,幷包含斷言以驗證轉換是否成功。

5. 使用 JSON-Java 將 Java Map 轉換為 JSON

如果我們更喜歡一個輕量級且極簡的 JSON 庫,我們可以使用json,因為它提供了用於 JSON 操作的簡單 API。

要使用它將 Map 轉換為 JSON,我們需要將 org.json 依賴項添加到 pom.xml 中:

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

在將 json 依賴項包含到我們的項目中後,我們現在可以定義一個將 Map 轉換為 JSON 的測試函數:

@Test
public void given_HashMapData_whenOrgJson_thenConvertToJsonUsing() {
    Map<String, String> data = new HashMap<>();
    data.put("CS", "Post1");
    data.put("Linux", "Post1");
    data.put("Kotlin", "Post1");
    JSONObject jsonObject = new JSONObject(data);
    String orgJsonData = jsonObject.toString();
    Assertions.assertEquals(orgJsonData, originalJsonData);
}
<p>我們創建了一個 <em >HashMap</em> 對象,並用鍵值對填充。然後,我們使用 JSON-Java 庫中的 <em >JSONObject</em> 類將 <em >HashMap</em> 轉換為 JSON 對象。</p>

6. 結論

在本文中,我們討論瞭如何在 Java 中將 Map 轉換為 JSON。這使我們能夠以廣泛認可的格式表示結構化數據,用於互操作性和數據交換。

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

發佈 評論

Some HTML is okay.