HOWTO · Java

如何在 Java 中把 Hashmap 轉換為 JSON 物件

它描述了允許我們將雜湊圖轉換為簡單的 JSON 物件的方法。

本頁內容

本文介紹了在 Java 中把 Hashmap 轉換為 JSON 物件的方法。我們將看到關於建立一個 hashmap,然後將其轉換為 JSON 物件的詳細例子。

Hashmap 和 JSON 都是開發人員非常常用的,因為它們幫助我們建立了一個簡單的結構,可以輕鬆地用於儲存以及傳輸資料。

new JSONObject(hashmap) 將 Hashmap 轉換為 JSON 物件

將雜湊圖轉換為 JSON 物件的最傳統方法是呼叫 JSONObject(),然後傳遞雜湊圖。

讓我們看一個建立雜湊圖,然後以 JSON 格式列印的示例。

import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONObject;

public class Main {
  public static void main(String[] args) {
    Map<String, Object> map = new HashMap();

    map.put("key1", "value1");
    map.put("key2", "value2");

    JSONObject json = new JSONObject(map);
    System.out.printf("JSON: %s", json);
  }

輸出:

JSON: {"key1":"value1","key2":"value2"}

需要注意的是,Map<String, Object> 需要一個字串,即 key,和一個物件 Object,即 value。這意味著我們可以將任何有效的物件作為值傳入 Map,然後將其轉換為 JSON 物件。

下面是一個例子,它把一個字串和一個 Arraylist 作為值。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONObject;

public class Main {
  public static void main(String[] args) {
    ArrayList<String> stringArrayList = new ArrayList<>();
    stringArrayList.add("firstString");
    stringArrayList.add("secondString");
    stringArrayList.add("thirdString");

    Map<String, Object> map = new HashMap();
    map.put("key1", "value1");
    map.put("key2", "value2");
    map.put("stringList", stringArrayList);

    JSONObject json = new JSONObject(map);
    System.out.printf("JSON: %s", json);
  }

輸出:

JSON: {"key1":"value1","key2":"value2","stringList":["firstString","secondString","thirdString"]}

Jackson 庫將 Hashmap 轉換為 JSON 物件

在 Java 中,有一些庫可以幫助我們將 Hashmap 轉換為 JSON 物件,而且非常靈活。

Jackson 是這些庫中的一個,它接收一個 Java map,然後將其轉換成 JSON 格式。

我們不要忘記處理 JsonProcessingException,因為 ObjectMapper().writeValueAsString(map) 發現不相容的資料格式時,會丟擲異常。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class Main {
  public static void main(String[] args) throws JsonProcessingException {
    Map<String, Object> map = new HashMap();
    map.put("key1", "value1");
    map.put("key2", "value2");

    String json = new ObjectMapper().writeValueAsString(map);
    System.out.printf("JSON: %s", json);
  }

輸出:

JSON: {"key1":"value1","key2":"value2"}

GSON 庫將 Hashmap 轉換為 JSON 物件

Gson 庫是最常用的將 hashmap 轉換為 JSON 物件的庫之一。它提供了簡單的方法來處理我們的 hashmap 和 JSON。

Gson 類有一個方法 toJsonTree 它接收我們的 Map 並將其轉換為 JSON 樹。但由於我們需要一個 JSON 物件,我們可以使用 toJSONObject() 來使 JSON 樹成為一個 JSON 物件。

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import java.util.HashMap;
import java.util.Map;

public class Main {
  public static void main(String[] args) {
    Map<String, Object> map = new HashMap();
    map.put("key1", "value1");
    map.put("key2", "value2");

    Gson gson = new Gson();
    JsonObject json = gson.toJsonTree(map).getAsJsonObject();

    System.out.printf("JSON: %s", json);
  }

輸出:

JSON: {"key1":"value1","key2":"value2"}