JSON,泽西岛和jackson的多态性
Jackson和Jersey支持多态类而不是JSON吗?
比如说,我有一个Parent类和一个inheritance它的Child类。 而且,假设我想使用JSON通过HTTP发送和接收父和子。
public class Parent { ... } public class Child extends Parent { ... }
我考虑过这种实现:
@Consumes({ "application/json" }) // This method supposed to get a parent, enhance it and return it back public @ResponseBody Parent enhance(@RequestBody Parent parent) { ... }
问题:如果我给这个函数(当然是通过JSON)一个Child对象,它会起作用吗? 孩子的额外会员字段也会被序列化吗? 基本上,我想知道这些框架是否支持多态消费和响应。
顺便说一下,我正在使用Spring MVC。
jackson确实支持多态性,
在您的子类中使用名称注释:
@JsonTypeName("Child_Class") @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "objectType") public class Child extends Parent{ .... }
在父级中指定子类型:
@JsonSubTypes({ @JsonSubTypes.Type(value = Child.class), @JsonSubTypes.Type(value = SomeOther.class)}) public class Parent { .... }