我有一个父类,我在其上指定了一个像这样的自定义反序列化器 -
@JsonDeserialize(using = CustomDeserializer.class)
public class ParentClass {
}
我有扩展于类之上的子类,并且我不希望这些类使用 CustomDeserializer 进行反序列化。我知道使用会在序列化期间忽略 CustomDeserializer 类。
@JsonDeserialize(as = Child.class)
public class ChildClass extends ParentClass {
}
问题是 - 是否有任何其他方法可以告诉 ObjectMapper 或其他任何会忽略此 CustomDeserializer 的方法,而无需在每个子类上专门指定 @JsonDeserialize(as = Child.class) ?
最佳答案
从 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);
关于java - 反序列化子类对象时忽略 Jsonserializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57284284/