Jackson with Jersey 是否支持基于 JSON 的多态类?
例如,假设我有一个父类和一个继承自它的子类。而且,假设我想使用 JSON 通过 HTTP 发送和接收 Parent 和 Child。
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 对象,它会工作吗? 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 {
....
}
关于java - JSON、Jersey 和 Jackson 中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565299/