You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Moshi是否拥有类似Gson的Runtime Type Adapter Factory?

使用Gson的RuntimeTypeAdapterFactory处理多态类型适配

我已经用Gson开发好几周了,最近发现RuntimeTypeAdapterFactory这个类简直是处理多态类型序列化/反序列化的神器——它能完美适配那些运行时类型和声明类型不一致的值,帮我解决了之前头疼的多类型匹配问题!

下面是我目前在项目里使用的代码片段:

public class Database {
    private final Gson gson;

    private Database() {
        // 初始化Gson的RuntimeTypeAdapterFactory
        RuntimeTypeAdapterFactory<Base> runtimeTypeAdapterFactory = RuntimeTypeAdapterFactory
                .of(Base.class, "table")
                .registerSubtype(AdminsTbl.class, "admins");

        this.gson = new GsonBuilder()
                .registerTypeAdapterFactory(runtimeTypeAdapterFactory)
                // 可根据需求添加其他配置,比如日期格式、空值序列化策略等
                .create();
    }

    // 这里可以添加数据库相关的业务方法,比如序列化实体到JSON、反序列化JSON到实体等
}

简单拆解一下这段代码的核心逻辑:

  • 指定基类与类型标识字段:RuntimeTypeAdapterFactory.of(Base.class, "table") 定义了基类是Base,同时用JSON里的"table"字段来区分不同的子类型;
  • 绑定子类与标识:registerSubtype(AdminsTbl.class, "admins") 把AdminsTbl子类和标识字符串"admins"关联起来,这样Gson在处理时,看到"table":"admins"就知道要反序列化成AdminsTbl实例;
  • 注册工厂构建Gson:把这个类型适配器工厂注册到GsonBuilder后,生成的Gson实例就能自动处理多态类型的序列化和反序列化,不用再手动写复杂的类型转换逻辑。

用这个工具类之后,处理多态场景的代码简洁了很多,再也不用纠结类型不匹配的问题啦~

内容的提问来源于stack exchange,提问作者Piorrro33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:46:09