Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jackson反序列化时获取NPE读取空对象字段_Java_Json_Serialization_Jackson_Deserialization - Fatal编程技术网

Java 使用Jackson反序列化时获取NPE读取空对象字段

Java 使用Jackson反序列化时获取NPE读取空对象字段,java,json,serialization,jackson,deserialization,Java,Json,Serialization,Jackson,Deserialization,我有一个基类a和两个子类B和C扩展了a。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.c

我有一个基类a和两个子类B和C扩展了a。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可以为null,我不想在序列化过程中跳过,即使它为null。然后,当我尝试反序列化json字符串时,我得到了NPE。我认为这是因为Json字符串没有“类型”供映射器查找子类型。有办法解决这个问题吗?

事实上,这对杰克逊来说很好。NPE由我自己的构造函数抛出