【问题标题】:Jackson: can json specify the target type?Jackson:json可以指定目标类型吗?
【发布时间】:2015-08-17 05:05:37
【问题描述】:

这就是我的班级的样子 -

public class A {
    private Map<String, Object> objects = null;
    ....
}

我的 json 会像 -

{
    "f1" : {
        "name" : "some name",
        "val" : 3
    },
    "f2" : {
        "arg": {
            some field/value pairs
        }
    }
}

我想要的是在 JSON 本身中指定可以反序列化为的类型。因此 f1 的值将被转换为 B 类的对象,而 f2 将被转换为 C 的对象。

我的代码将如下所示 -

Object o = objects.get("f1");
if (o instanceof B) {
  ...
} else if (o instanceof C) {
  ...
}

有没有办法做到这一点?我希望 json 来控制反序列化。

【问题讨论】:

标签: java android json jackson


【解决方案1】:

是的,如果 JSON 文档有类型标识符,Jackson 可以使用它。这通常通过使用注解@JsonTypeInfo 来完成。

有多种方法可以添加/使用类型标识符,包括它是如何包含在 JSON 文档中的,以及使用哪种类型的 id(类型名称或 Java 类名称?)。

查看事物如何匹配的最简单方法是实际从 POJO 开始,添加 @JsonTypeInfo 注释,并将其序列化以查看生成的 JSON 类型。一旦您了解了包含的工作原理,您就可以在必要时修改 JSON 的结构和/或 Java 类定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-31
    • 2010-10-22
    • 1970-01-01
    • 2011-12-11
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多