Gson 忽略未知的枚举值

Sea*_*yen 5 java gson

有没有办法配置 gson 以忽略未知的枚举值?例如

在我的客户端代码中有一个枚举 DeviceType 有 2 个枚举值:PC、MOBILE

但是当服务器被发送另一种类型时,例如 MAC 作为另一种 DeviceType。如何配置我的 gson 反序列化器以设置 DeviceType = null 而不是抛出异常?

谢谢,

肖恩

anr*_*nro 6

现在我们可以使用可为空的枚举类型,例如:

data class SomeDTO (
    val type : DeviceType?,
    //other values
)
Run Code Online (Sandbox Code Playgroud)

这样的话,解析就不会有任何异常。


E-R*_*Riz 2

JsonDeserializer您可以轻松编写忽略未知值的自定义。在这里阅读更多内容。作为起点,请查看源 gson 源代码、类com.google.gson.DefaultTypeAdapters.EnumTypeAdapter