【发布时间】:2011-08-05 22:31:03
【问题描述】:
有没有办法将 gson 配置为忽略未知的枚举值?为了 例子
在我的客户端代码中有一个枚举 DeviceType 有 2 个枚举值:PC, 手机
但是当一个服务器被发送另一种类型例如 MAC 作为另一种 设备类型。如何配置我的 gson 反序列化器以设置 DeviceType = null 而不是抛出异常?
谢谢,
肖恩
【问题讨论】:
-
如果你不知道合法值,也许你不应该使用枚举?或者,相反,如果值是固定的,那么发送错误值的人应该修复他们的代码而不是发送它们?
-
这些值是每个版本的固定集。这不会经常更改,但可以在新版本中添加一些。这与协议缓冲区处理得非常好,解析器只是忽略该值并设置为未知字段。我希望 gson 开箱即用地提供类似的东西。
-
你可能应该只使用一个字符串,如果需要的话,稍后再使用辅助方法来获取一个枚举。此外,如果 Gson 确实支持设置方法(不仅仅是字段),您可以在那里进行转换......但它不(还没有?)