非抽象父类的jackson多态反序列化

时间:2018-08-02 06:16:00

标签: java json spring jackson json-deserialization

我一直在使用springframework的jackson 2.9.0。我想从远程反序列化一些json,它们内部没有类型信息。但是某些属性可以帮助我检测出真正的类型。我使用杰克逊@JsonTypeResolver注释来自定义我的类型解析。

@JsonTypeResolver(ParvanehTypeResolver.class)
public class Parvaneh{


}

public class ParvanehVared extends Parvaneh{


}

但是有一个小问题:因为我的父类(Parvaneh)不是抽象的,所以Jackson不会调用我的ParvanehTypeResolver来检测真正的具体类。它只是将所有json反序列化为Parvaneh类。

请帮助。

1 个答案:

答案 0 :(得分:0)

使用@JsonTypeIdResolver@JsonTypeInfo来实现多态反序列化也许更好?..

@JsonTypeInfo(
  use = JsonTypeInfo.Id.NAME, 
  include = JsonTypeInfo.As.PROPERTY, 
  property = "@type"
)
@JsonTypeIdResolver(ParvanehTypeIdResolver.class)
public class Parvaneh {
    //...
}

更多信息:12