2017-03-22 2 views
-5

기본 클래스 A와 2 개의 하위 클래스 B 및 C가 있습니다. A는 추상 클래스입니다. 그리고 A는 다른 클래스의 필드입니다.잭슨을 사용하여 비 직렬화 할 때 NPE 읽기 null 객체 필드 가져 오기

@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 인 경우에도 직렬화 중에 A를 건너 뛰고 싶지는 않습니다. 그런 다음 json String을 deserialize하려고하면 NPE가 발생합니다. Json String에는 하위 유형을 찾기위한 매퍼 (mapper)의 "유형"이 없기 때문이라고 생각합니다. 이 문제를 해결할 방법이 있습니까?

답변

-2

사실이 사실은 Jackson과 잘 맞습니다. NPE는 제 생성자가 던집니다.