假设我们有以下类层次结构:
@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
注释,但似乎它使用了字符串作为类型。这可能是通过一些定制转换器或(反)串行器来实现的吗?