Java 使用@JsonFormat时,json中带有继承和对象列表的对象序列化无效
我有以下课程: 形状:Java 使用@JsonFormat时,json中带有继承和对象列表的对象序列化无效,java,json,jackson,jackson-databind,Java,Json,Jackson,Jackson Databind,我有以下课程: 形状: @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT) @JsonSubTypes({ @JsonSubTypes.Type(value = Rectangle.class), @JsonSubTypes.Type(value = Circle.class)}) public abstract class Shape { } 圆
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes({
@JsonSubTypes.Type(value = Rectangle.class),
@JsonSubTypes.Type(value = Circle.class)})
public abstract class Shape {
}
圆圈:
@JsonTypeName("circle")
public class Circle extends Shape {
int radius;
//getters,setters
}
矩形:
@JsonTypeName("rectangle")
public class Rectangle extends Shape {
private int w;
private int h;
//getters,setters
}
视图:
序列化后,我得到以下json字符串:
[[{"circle":{"radius":2}},{"rectangle":{"w":5,"h":4}}]]
我得到数组中的数组。我可以使用以下行,使用相同的结构:
[{"circle":{"radius":2}},{"rectangle":{"w":5,"h":4}}]
我不想将列表包装成数组,列表对我来说已经是数组。您的
视图
类将形状
定义为列表。您需要将其更改为private Shape代码>但是,它不正确。我会有一个形状列表。通过这种方法,我会有一个。哦,我现在明白你的意思了,我错了。您是否尝试从视图
类中删除jsonformat注释?是的,我尝试过。在这种情况下,我得到它:{“shapes”:[{“circle”:{“radius”:2}},{“rectangle”:{“w”:5,“h”:4}}]}
我得到了shapes
键,但它是多余的。你有什么想法吗?
[[{"circle":{"radius":2}},{"rectangle":{"w":5,"h":4}}]]
[{"circle":{"radius":2}},{"rectangle":{"w":5,"h":4}}]