我需要知道是否可以将通用对象反序列化为它的定义类型,而无需附加属性或在注释中不提及类型。

例如:-

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")


在上面我必须提到@class属性,另一种方法是

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


在上面的示例中,我们定义了子类和自定义类型。

使用自定义反序列化器StdDeserializer<T>

还有其他方法可以告诉我。

最佳答案

如果您可以找到一种从JSON数据确定对象子类型的方法,则可以编写一个自定义TypeId解析器来为您处理它。请参见Jackson Custom TypeId Resolver

09-11 17:57