[Java] Serialize with Gson
Introduction
Gson 是 Google 開發的 Java 函式庫,用於將 Java 物件序列化為 JSON 字串,以及將 JSON 字串反序列化為 Java 物件。它提供了簡潔的 API 和強大的功能,是 Java 開發中常用的 JSON 處理工具。
主要特色
- 簡單易用:API 設計直觀,學習成本低
- 零依賴:不需要額外的第三方函式庫
- 泛型支援:完整支援 Java 泛型
- 自訂序列化:支援自訂序列化和反序列化邏輯
- 註解支援:提供豐富的註解來控制序列化行為
基本用法
簡單物件序列化
// 建立 Gson 實例
Gson gson = new Gson();
// 物件轉 JSON
Person person = new Person("John", 30);
String json = gson.toJson(person);
// 結果:{"name":"John","age":30}
// JSON 轉物件
Person personFromJson = gson.fromJson(json, Person.class);
集合處理
// List 序列化
List<Person> people = Arrays.asList(
new Person("John", 30),
new Person("Jane", 25)
);
String json = gson.toJson(people);
// List 反序列化
Type listType = new TypeToken<List<Person>>(){}.getType();
List<Person> peopleFromJson = gson.fromJson(json, listType);
常用註解
@SerializedName
public class User {
@SerializedName("user_name")
private String userName;
@SerializedName("user_id")
private Long userId;
}
@Expose
public class User {
@Expose
private String name; // 會被序列化
@Expose(serialize = false)
private String password; // 只反序列化,不序列化
private String internalId; // 不會被序列化
}
// 使用時需要配置
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create();