我已经为CustomAttribute
数据类下的json字段Value
创建了一个密封类,这个字段可以返回String
或Array of Strings
。
我们如何从json中反序列化这个密封类?
data class CustomAttribute (
val attributeCode: String,
val value: Value
)
sealed class Value {
class StringArrayValue(val value: List<String>) : Value()
class StringValue(val value: String) : Value()
}
2条答案
按热度按时间0lvr5msh1#
一种解决方案是按照this answer中的说明使用
RuntimeTypeAdapterFactory
RuntimeTypeAdapter
包含在Gson的源代码中,但未公开为Maven工件。它被设计为复制/粘贴到您的项目from here中
l5tcr1uw2#
过去我已经成功地序列化和反序列化了一个密封类,并声明使用Jackson而不是Gson作为我的序列化引擎。
我的密封类已经定义为:
通过使用注解,假定通信的双方都拥有密封类的统一定义,则Jackson示例不需要进一步配置就可以正确地序列化和反序列化该密封类的示例。
虽然我认识到
JsonTypeInfo
是一个特定于Jackson的注解,但如果必须使用Gson特性,也许您可以考虑从Gson转换过来-或者您可以找到一个等效的Gson配置,它也可以在序列化数据中包含类标识符。