JSON,Jersey和Jackson中的多态性

Jackson with Jersey是否支持JSON上的多态类?

比方说,例如,我有一个Parent类和一个从其继承的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对象,它将起作用吗?Child的多余成员字段也将被序列化吗?基本上,我想知道这些框架是否支持多态消费和响应。

顺便说一句,我正在使用Spring MVC。

回答:

杰克逊确实支持多态,

在您的孩子班级中用以下名称注释:

 @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 {

....

}

以上是 JSON,Jersey和Jackson中的多态性 的全部内容, 来源链接: utcz.com/qa/401501.html

回到顶部