反序列化子类对象时忽略JsonDeserializer

时间:2019-07-31 06:09:52

标签: java json serialization jackson deserialization

我有一个父类,在该类上已指定了这样的自定义反序列化器-

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

1 个答案:

答案 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);