java - 反序列化子类对象时忽略 Jsonserializer

标签 java json serialization jackson deserialization

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

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

相关文章:

java - Action 类在 selenium webdriver 中以 Debug模式工作

javascript - ionic 框架的动态数据

php - 将 PHP 对象图序列化/反序列化为 JSON

c# - 如何并排加载c#对象

java - 为什么 Lucene Token Filter 类必须声明为 "final"?

java - 在 Clojure 中使用 java 方法作为函数参数

Java 到 C# 的转换 - int uint 类型

ios - ObjectMapper如何映射[String :CustomObject] With Index as CustomObject Property的Dictionary

javascript - 如何使用 jsonPath 或替代方法从 JSON 结构中的 childNode 查找 parentNode?

MySQL更新序列化数据