使用复杂的"类型"杰克逊的多态性领域

时间:2016-12-11 21:31:01

标签: java jackson

假设我们有以下类层次结构:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = Dog.class, name = "Dog"),
    @JsonSubTypes.Type(value = Cat.class, name = "Cat") }
)
public abstract class Animal {
}

class Dog extends Animal {}
class Cat extends Animal {}

序列化Dog实例将添加type: "Dog"属性,并且在反序列化期间将使用相同的属性构造正确的实例。我的问题是我可以更改type字段的类型,不是简单的字符串字段,而是说复杂的{ key: "", value: ""}对象(class AnimalKey { String key; String value; })。我查看了JsonTypeIdResolver注释,但似乎它使用了字符串作为类型。这可能是通过一些定制转换器或(反)串行器来实现的吗?

0 个答案:

没有答案