首頁 > Java > java教程 > 如何為 Gson 建立自訂 JSON 反序列化器?

如何為 Gson 建立自訂 JSON 反序列化器?

Barbara Streisand
發布: 2024-12-10 11:53:14
原創
453 人瀏覽過

How to Create a Custom JSON Deserializer for Gson?

Gson 的自訂JSON 反序列化器

當接收具有自訂結構的JSON 資料時,Gson 的預設反序列化過程可能不夠。在這種情況下,需要自訂反序列化器。

考慮以下表示使用者的Java 類別:

public class User {
    int id;
    String name;
    Timestamp updateDate;
}
登入後複製

以及表示使用者清單的JSON 結構:

[{"id":1,"name":"Jonas","update_date":"1300962900226"},
{"id":5,"name":"Test","date_date":"1304782298024"}]
登入後複製

要將此JSON 反序列化為User 實例,可以使用自訂反序列化器定義:

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import java.sql.Timestamp;

public class UserDeserializer implements JsonDeserializer<User> {
    @Override
    public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
        throws JsonParseException {
        long time = json.getAsJsonPrimitive().getAsLong();
        return new User(
            json.get("id").getAsInt(),
            json.get("name").getAsString(),
            new Timestamp(time));
    }
}
登入後複製

此反序列化器將JSON 解析為 User 實例,同時考慮指定的欄位名稱和自訂時間戳解析。

要將此反序列化器套用至 Gson 實例,請使用registerTypeAdapter 方法:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(User.class, new UserDeserializer());
Gson gson = gsonBuilder.create();
登入後複製

現在,可以使用修改後的 JSON 反序列化為 User 實例清單Gson 實例。

以上是如何為 Gson 建立自訂 JSON 反序列化器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板