我试图使用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对象. …