การแปลง 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 ไลบรารี่
| คุณสมบัติ | Jackson | Gson | org.json |
|---|---|---|---|
| Performance | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Features | มากที่สุด | พอสมควร | น้อยที่สุด |
| Map Order Preservation | ต้องใช้ TreeMap | ต้องใช้ TreeMap | ไม่รับประกัน |
| Dependency Size | ใหญ่กว่า | กลาง | เล็กที่สุด |
| Spring Boot Default | ✅ | ❌ | ❌ |