java - Jackson 条件反序列化

标签 java json serialization jackson

我想根据传入的 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”是否是 ObjectNodeTextNode并根据该结果选择您想要如何反序列化对象。

关于java - Jackson 条件反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27029880/

相关文章:

java - 在部署时覆盖 Jboss EAP 6.4 中 web.xml 中的上下文参数

java - 网络.sf.json.JSONException : There is a cycle in the hierarchy

json - 带 jq 的日期/数字过滤器

php从序列化数据中获取满足条件的行

java - piTest 删除了对 "forEach"SURVIVED 的调用

java - 在Linux中配置tomcat并运行部署的应用程序

java - 是否可以让 jackson 2 识别@codehause...JsonIgnoreProperties?

java - Spring @JsonIgnore 序列化未按预期工作

java - 如果我序列化一个类对象,然后修改一个字段并将该字段移至父类,会发生什么情况?

java - 如何将长字符串转换为更短的字符串