Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

แปลง Java Map เป็น JSON: คู่มือ Jackson, Gson และ org.json

การแปลง Java Map เป็น JSON เป็นงานทั่วไป บทความนี้示範 3 ไลบรารี่ยอดนิยม: Jackson, Gson, และ org.json

Map ตัวอย่าง

Map<String, String> map = new HashMap<>();
map.put("Key1", "Value1");
map.put("Key2", "Value2");
map.put("Key3", "Value3");

1. Jackson (แนะนำสำหรับ Production)

Dependency (Maven)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

โค้ด Jackson

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;

public class MapToJsonJackson {
    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        
        // HashMap - ลำดับไม่คงที่
        Map<String, String> hashMap = new HashMap<>();
        hashMap.put("Key1", "Value1");
        hashMap.put("Key2", "Value2");
        hashMap.put("Key3", "Value3");
        System.out.println("HashMap: " + mapper.writeValueAsString(hashMap));
        // Output: {"Key3":"Value3","Key1":"Value1","Key2":"Value2"}
        
        // SortedMap (TreeMap) - รักษาลำดับ key
        SortedMap<String, String> sortedMap = new TreeMap<>();
        sortedMap.put("Key1", "Value1");
        sortedMap.put("Key2", "Value2");
        sortedMap.put("Key3", "Value3");
        System.out.println("TreeMap: " + mapper.writeValueAsString(sortedMap));
        // Output: {"Key1":"Value1","Key2":"Value2","Key3":"Value3"}
    }
}

2. Gson

Dependency (Maven)

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

โค้ด Gson

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.SortedMap;
import java.util.TreeMap;

public class MapToJsonGson {
    public static void main(String[] args) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        
        // ใช้ TreeMap เพื่อรักษาลำดับ
        SortedMap<String, String> map = new TreeMap<>();
        map.put("Key1", "Value1");
        map.put("Key2", "Value2");
        map.put("Key3", "Value3");
        
        String json = gson.toJson(map);
        System.out.println(json);
        // Output: {"Key1":"Value1","Key2":"Value2","Key3":"Value3"}
    }
}

3. org.json (Lightweight, ไม่ต้องการ Dependency มาก)

Dependency (Maven)

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

โค้ด org.json

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

public class MapToJsonOrgJson {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("Key1", "Value1");
        map.put("Key2", "Value2");
        map.put("Key3", "Value3");
        
        JSONObject json = new JSONObject(map);
        System.out.println(json.toString(4)); // indent 4 spaces
        // Output: HashMap order (not guaranteed)
    }
}

เปรียบเทียบ 3 ไลบรารี่

คุณสมบัติJacksonGsonorg.json
Performance⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Featuresมากที่สุดพอสมควรน้อยที่สุด
Map Order Preservationต้องใช้ TreeMapต้องใช้ TreeMapไม่รับประกัน
Dependency Sizeใหญ่กว่ากลางเล็กที่สุด
Spring Boot Default✅❌❌

บทความเกี่ยวข้อง