首页 > Java > java教程 > 如何为 Gson 创建自定义 JSON 反序列化器?

如何为 Gson 创建自定义 JSON 反序列化器?

Barbara Streisand
发布: 2024-12-10 11:53:14
原创
472 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板