Gson 是 Google 開源的 Java JSON 庫,API 簡潔、支援泛型、預設處理 `null` 值,適合快速序列化/反序列化。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version> <!-- 請用最新版 -->
</dependency>
import com.google.gson.Gson;
import java.util.Map;
public class GsonUtil {
private static final Gson GSON = new Gson(); // 執行緒安全,可重用
/** Map → JSON 字串 */
public static <T> String toJson(Map<String, T> map) {
return GSON.toJson(map);
}
/** JSON 字串 → Map (需 TypeToken 處理泛型) */
public static <T> Map<String, T> fromJson(String json, Class<T> valueType) {
return GSON.fromJson(json, new com.google.gson.reflect.TypeToken<Map<String, T>>() {}.getType());
}
}
import java.util.*;
public class Demo {
public static void main(String[] args) {
Map<String, Object> data = new LinkedHashMap<>(); // 保持插入順序
data.put("id", 1001);
data.put("name", "張三");
data.put("roles", Arrays.asList("admin", "user"));
data.put("active", true);
data.put("score", null); // Gson 預設輸出 null
String json = GsonUtil.toJson(data);
System.out.println(json);
// {"id":1001,"name":"張三","roles":["admin","user"],"active":true,"score":null}
// 反序列化
Map<String, Object> parsed = GsonUtil.fromJson(json, Object.class);
System.out.println(parsed.get("name")); // 張三
}
}
Gson gson = new GsonBuilder()
.setPrettyPrinting() // 格式化輸出(開發/除錯用)
.serializeNulls() // 輸出 null 欄位(預設已開啟)
.disableHtmlEscaping() // 不轉義 HTML 特殊字元 (< > &)
.setDateFormat("yyyy-MM-dd HH:mm:ss") // 日期格式
.create();