如果 Moshi 中的值不匹配,如何回退到“所有”枚举

Jon*_*nas 5 android moshi

类似于如果 OpenAPI 生成器的 Moshi 中的值不匹配,如何回退到枚举以及如果 OpenAPI 生成器的 Moshi 中的值不匹配,如何回退到枚举

我们如何为 moshi 添加自定义枚举适配器以支持可为 null 或未知/后备值?但是以一种适用于所有枚举的方式吗?

其他答案提供了类似的内容

.add(Gender::class.java, NullableEnumAdapter<Gender>())
Run Code Online (Sandbox Code Playgroud)

它有效。在项目中我们有 26 个枚举。手动执行此操作似乎不太实际,例如:

    .add(GetFilteredObjectivesData.FilterReset::class.java, CustomEnumJsonAdapter.create(GetFilteredObjectivesData.FilterReset::class.java).withUnknownFallback(null))
    .add(DomainData.Type::class.java, CustomEnumJsonAdapter.create(DomainData.Type::class.java).withUnknownFallback(null))
    .add(DomainData.JxMode::class.java, CustomEnumJsonAdapter.create(DomainData.JxMode::class.java).withUnknownFallback(null))
    .add(CommonFacility.BusinessType::class.java, CustomEnumJsonAdapter.create(CommonFacility.BusinessType::class.java).withUnknownFallback(null))
    .add(CommonFacility.FacilityType::class.java, CustomEnumJsonAdapter.create(CommonFacility.FacilityType::class.java).withUnknownFallback(null))
    .add(TokenData.Features::class.java, CustomEnumJsonAdapter.create(TokenData.Features::class.java).withUnknownFallback(null))
Run Code Online (Sandbox Code Playgroud)

有什么办法可以为所有人做到这一点吗?为所有枚举添加自定义枚举适配器?