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

Rupam Yadav 2023年1月30日 2020年9月26日
  1. new JSONObject(hashmap) 將 Hashmap 轉換為 JSON 物件
  2. Jackson 庫將 Hashmap 轉換為 JSON 物件
  3. GSON 庫將 Hashmap 轉換為 JSON 物件
如何在 Java 中把 Hashmap 轉換為 JSON 物件

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

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

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

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

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

import org.json.simple.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");
 
       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 org.json.simple.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

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"}
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

相關文章 - Java JSON

相關文章 - Java Hashmap