跳至主要内容

[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();

See Also

Gson API documentation

References