具有自定义条件的杰克逊多态反序列化

时间:2018-11-16 13:40:46

标签: java json spring serialization jackson

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

例如:-

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

还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

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