1. 概述
Gson 是一個 Java 庫,它允許我們將 Java 對象轉換為 JSON 格式的表示。 此外,我們也可以反過來使用它,將 JSON 字符串轉換為等效的 Java 對象。
在本快速教程中,我們將學習如何將各種 Java 數據類型保存為 JSON 文件。
2. Maven 依賴項
首先,我們需要在 pom.xml 中添加 Gson 依賴項。該依賴項可在 Maven Central 上找到:Maven Central
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.11.0</version>
</dependency>3. 將數據保存到 JSON 文件
我們將使用 toJson(Object src, Appendable writer) 方法,從 Java 數據類型中轉換成 JSON 格式,並將其存儲在文件中。 Gson() 構造函數創建了一個帶有默認配置的 Gson 對象:
Gson gson = new Gson();現在,我們可以調用 toJson() 方法將 Java 對象轉換為並存儲。
讓我們通過使用不同數據類型的一些示例來探索 Java。
3.1. 原始數據
將原始數據保存到 JSON 文件非常簡單,可以使用 GSON:
gson.toJson(123.45, new FileWriter(filePath));這裏,filePath 表示文件的位置。文件輸出將僅包含原始值:
123.453.2. 自定義對象
同樣,我們也可以將對象存儲為 JSON。
首先,我們將創建一個簡單的 User 類:
public class User {
private int id;
private String name;
private transient String nationality;
public User(int id, String name, String nationality) {
this.id = id;
this.name = name;
this.nationality = nationality;
}
public User(int id, String name) {
this(id, name, null);
}
}現在,我們將一個 User 對象存儲為 JSON:
User user = new User(1, "Tom Smith", "American");
gson.toJson(user, new FileWriter(filePath));文件輸出將是:
{"id":1,"name":"Tom"}如果一個字段被標記為 transient,則默認情況下會被忽略,且不會包含在 JSON 序列化或反序列化過程中。因此,nationality 字段不會出現在 JSON 輸出中。
此外,Gson 默認情況下會在序列化過程中省略空字段。例如,考慮以下示例:
gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));文件輸出將是:
{"id":1}我們稍後將看到如何將空字段包含在序列化中。
3.3. 集合
我們可以以類似的方式存儲對象的集合:
User[] users = new User[] { new User(1, "Mike"), new User(2, "Tom") };
gson.toJson(users, new FileWriter(filePath));在這種情況下,文件輸出將是一個 User 對象數組:
[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]4. 使用 GsonBuilder
為了調整 Gson 的默認配置設置,我們可以利用 GsonBuilder 類。
該類遵循 Builder 模式,通常首先通過調用各種配置方法設置所需的選項,然後調用 create() 方法:
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();在這裏,我們設置了漂亮的打印選項,默認情況下設置為 false。 類似地,要將空值包含在序列化中,我們可以調用 serializeNulls()。 可用的選項列表請參考這裏.
5. 結論
在本文中,我們學習瞭如何將各種 Java 數據類型序列化為 JSON 文件。要了解更多關於 JSON 的文章,請查看我們關於該主題的其他教程。