【问题标题】:Get NPE reading null object field when deserializing using Jackson [closed]使用 Jackson 反序列化时获取 NPE 读取空对象字段 [关闭]
【发布时间】:2017-08-15 06:41:23
【问题描述】:

我有一个基类 A 和 2 个扩展 A 的子类 B 和 C。A 是一个抽象类。而 A 是另一个类中的一个字段 类似于:

@JsonTypeInfo({
  use = JsonTypeInfo.Id.NAME, 
  include = JsonTypeInfo.As.PROPERTY,
  property= "type"
})
@JsonSubTypes({
  @JsonSubTypes.Type(value = B.class, name = "b"),
  @JsonSubTypes.Type(value = C.class, name = "c")
})
public abstract class A {

}

public class B extends A {
    @JsonCreator
    ...
}

public class C extends A {
    @JsonCreator
    ...
}

public class MyClass {
    private A a;
}

我想序列化和反序列化 MyClass。虽然 MyClass 中的字段 A 可能为空,但我不想在序列化过程中跳过 A,即使它为空。然后,当我尝试反序列化 json 字符串时,我得到了 NPE。我认为这是因为 Json 字符串没有供映射器查找子类型的“类型”。有没有办法解决这个问题?

【问题讨论】:

    标签: java json serialization jackson deserialization


    【解决方案1】:

    实际上,这对杰克逊很有效。 NPE 是由我自己的构造函数抛出的。

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 2018-07-21
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2021-11-01
      • 2016-07-26
      • 1970-01-01
      • 2014-02-12
      相关资源
      最近更新 更多