【发布时间】:2020-06-01 14:52:52
【问题描述】:
我关注 Jackson 注释类 (Kotlin)
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type"
)
@JsonSubTypes(
value = [
JsonSubTypes.Type(value = Child1::class, name = "child1"),
JsonSubTypes.Type(value = Child2::class, name = "child2")
]
)
sealed class Parent
class Child1: Parent()
class Child2: Parent()
我尝试反序列化不包含 type 属性的 JSON,但我提供了具体的类,所以这无关紧要
// Kotlin extension method provides type in runtime
mapper.readValue<Child1>(json)
我还是得到了Missing type id when trying to resolve subtype of ...。有没有办法告诉 Jackson 使用反序列化中提供的类型,而不是尝试从 type 属性中找到它?
【问题讨论】:
-
谢谢,我的代码中有
Child2,这是一个简单的帖子造成的错误。readValue<Child1>是 Kotlin 扩展方法,将Child1作为类型参数传递 -
检查另一个 SO 问题的答案:stackoverflow.com/a/62444816/10668681
-
在另一个 SO 问题中检查这个答案:stackoverflow.com/a/62444816/10668681
-
从另一个 SO 问题检查这个答案:stackoverflow.com/a/62444816/10668681
标签: java jackson polymorphism