Moshi PolymorphicJsonAdapterFactory

Moshi PolymorphicJsonAdapterFactory

我正在为一个 Android 应用程序使用 Moshi,但是当负载因任何原因发生变化时,例如:后端添加一个新的对象类型,应用程序将崩溃,因为我需要告诉 Moshi 获取这个新的对象类型。

return Moshi.Builder()
    .add(Adapter1())
    .add(PolymorphicJsonAdapterFactory
            .of(BaseClass::class.java, "baseclass")
            .withSubtype(EntityOne::class.java, "entityone")
            .withSubtype(EntityTwo::class.java, "entitytwo")
    )
    .build()

一切正常,但如果新实体进入有效负载,应用将不会显示任何数据。

示例:添加了一个“entitythree”,为了避免应用停止显示信息,我需要来添加

.withSubtype(EntityThree::class.java, "entitythree")

如果负载添加新实体,没有任何反应并且应用程序将继续正常运行,我该如何避免这种行为?

提前致谢

有一个 class 表示未知实体:

data class UnknownEntity : BaseClass {
    val baseclass: String = "unknown"
}

然后,添加到你的工厂:

PolymorphicJsonAdapterFactory
            .of(BaseClass::class.java, "baseclass")
            .withSubtype(EntityOne::class.java, "entityone")
            .withSubtype(EntityTwo::class.java, "entitytwo")
            .withDefaultValue(UnknownEntity())

然后在您处理获取的实体的其余逻辑中,只需忽略 UnknownEntity 实例,应用程序应该像以前一样工作。