我有一个父类,在该类上已指定了这样的自定义反序列化器-
@JsonDeserialize(using = CustomDeserializer.class)
public class ParentClass {
}
我有扩展到类之上的子类,并且我不希望这些类使用CustomDeserializer进行反序列化。我知道在序列化过程中使用Will将忽略CustomDeserializer类。
@JsonDeserialize(as = Child.class)
public class ChildClass extends ParentClass {
}
问题是-是否有其他方法可以告诉ObjectMapper或其他任何可以忽略此CustomDeserializer的方法,而无需在每个子类上都专门指定@JsonDeserialize(as = Child.class)?
答案 0 :(得分:0)
从ParentClass中删除注释,并使用注释创建一个新的子类。要反序列化为ParentClass时,请使用此新子类。由于自定义反序列化注释位于子类上,因此您可以返回ParentClass的实例。
public class ParentClass {
// fields in the ParentClass
}
@JsonDeserialize(using = CustomDeserializer.class)
public class ParentWithCustomDeserialize extends Parent {
}
那么您就可以...
Parent parent = objectMapper.readValue(jsonString, ParentWithCustomDeserialize.class);