【发布时间】:2017-03-28 14:55:43
【问题描述】:
我有一些需要序列化的库代码。一个字段被定义为接口Foo,它只是一个标记接口。客户端代码应该创建一个实现Foo 的 Enum,以便它们可以根据需要扩展子类型列表。
我无法在 Gson 中使用类型适配器对其进行序列化。我得到的例外是:
java.lang.IllegalStateException:不是 JSON 对象:“SETUP”
其中 setup 是客户端枚举 Bar 的一个元素。
我添加了一个TypeAdapter,将Foo 定义为超类型,Bar 定义为子类型,使用 Gson RuntimeTypeAdapter 代码(来自 Google 的 Gson 助手)。关于我做错了什么的任何想法,或者 Gson 不支持这种结构?
我相信我可以通过将 Foo 设为抽象类并将 Setup 设为子类来解决问题,但这有点不太好,因为枚举实际上只是一个标记。
【问题讨论】:
-
如果您发布异常堆栈跟踪,至少是出于原因,MCVE 和您正在使用的 Gson 版本。