小编nka*_*sar的帖子

使用Jackson序列化java对象时保持子类型信息,而不使用包装器类

我试图使用Jackson在Java中使用两个子类在JSON文件和抽象类之间进行转换.理想情况下,我想使用JSON如下:

没有包装的Json文档

[ {
  "type" : "lion",
  "name" : "Simba",
  "endangered" : true,
  "action" : "running"
}, {
  "type" : "elephant",
  "name" : "Dumbo",
  "endangered" : false,
  "table" : [ 1.0, 2.0, 3.0 ]
} ]
Run Code Online (Sandbox Code Playgroud)

我已经注释了Animal抽象类,如http://www.studytrails.com/java/json/java-jackson-Serialization-polymorphism.jsp所示.

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type")
@JsonSubTypes({ @Type(value = Lion.class, name = "lion"),
    @Type(value = Elephant.class, name = "elephant") })
public abstract class Animal {
    String name;
    boolean endangered;

//Skipped constructor/getters/setters

}
Run Code Online (Sandbox Code Playgroud)

我可以使用包装器对象成功读取/写入它,但生成的JSON文件将包含一个额外的animals对象. …

java polymorphism serialization json jackson

5
推荐指数
1
解决办法
6265
查看次数

标签 统计

jackson ×1

java ×1

json ×1

polymorphism ×1

serialization ×1