知識庫 / JSON RSS 訂閱

將數據保存到JSON文件中(Gson)

JSON
HongKong
10
09:55 PM · Dec 05 ,2025

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 文件

我們將使用&nbsp;toJson(Object src, Appendable writer)&nbsp;方法,從 Java 數據類型中轉換成 JSON 格式,並將其存儲在文件中。 Gson() 構造函數創建了一個帶有默認配置的 Gson 對象:

Gson gson = new Gson();

現在,我們可以調用 toJson() 方法將 Java 對象轉換為並存儲。

讓我們通過使用不同數據類型的一些示例來探索 Java。

3.1. 原始數據

將原始數據保存到 JSON 文件非常簡單,可以使用 GSON:

gson.toJson(123.45, new FileWriter(filePath));

這裏,filePath 表示文件的位置。文件輸出將僅包含原始值:

123.45

3.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 的文章,請查看我們關於該主題的其他教程。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.