我想根据传入的 json 以不同的方式将 JSON 反序列化为 pojo。例如,传入的 JSON 可以采用以下两种形式之一:
{
"foo": {
"name": "a name",
"another": "value"
}
}
或
{
"foo": "a name"
}
接收者 pojo:
class Container {
Foo foo;
}
class Foo {
String name;
String another;
}
第一种情况很简单,默认行为可以处理它。不过,在第二种情况下,我希望系统创建一个 Foo,然后将传入的字符串分配给“name”字段。
我不知道如何使用 jackson 对多态反序列化的支持来做到这一点。可能吗?
最佳答案
您可以实现 JsonDeserializer<Container>
.
在其中您可以检查字段“foo”是否是 ObjectNode
或TextNode
并根据该结果选择您想要如何反序列化对象。
关于java - Jackson 条件反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27029880/