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 { .... }