假设我有以下格式的 JSON:
{
"type" : "Foo"
"data" : {
"object" : {
"id" : "1"
"fizz" : "bizz"
...
},
"metadata" : {
...
},
"owner" : {
"name" : "John"
...
}
}
}
我试图避免自定义反序列化器并尝试将上述 JSON(称为 Wrapper.java)反序列化为 Java POJO。 “类型”字段指示“对象”反序列化,即。 type = foo 表示使用 Foo.java 反序列化“对象”字段。 (如果 type = Bar,则使用 Bar.java 反序列化对象字段)。元数据/所有者将始终使用一个简单的 Jackson 注释 Java 类以相同的方式反序列化每个。有没有办法使用注释来完成这个?如果没有,如何使用自定义反序列化器完成此操作?
原文由 John Baum 发布,翻译遵循 CC BY-SA 4.0 许可协议
仅注释方法
作为 自定义反序列化器方法的替代方案,您可以使用以下方法作为仅注释解决方案(类似于 Spunc 的回答 中描述的解决方案,但使用
type
作为 外部属性):在这种方法中,
@JsonTypeInfo
设置为使用type
作为 外部属性 来确定正确的类来映射data
属性。JSON 文档可以反序列化如下: