2014-11-20 2 views
0

들어오는 json에 따라 JSON을 pojos에 다른 방식으로 deserialize하고 싶습니다.잭슨 조건부 직렬화

{ 
    "foo": { 
     "name": "a name", 
     "another": "value" 
    } 
} 

또는

{ 
    "foo": "a name" 
} 

수신기 POJO를 :

class Container { 
    Foo foo; 
} 

class Foo { 
    String name; 
    String another; 
} 

첫 번째 경우는 쉽게, 기본 동작 핸들 예를 들어, 수신 JSON 한 두 가지의 형태로 올 수 그것. 그러나 두 번째 경우에는 시스템에서 Foo를 만든 다음 들어오는 문자열을 "name"필드에 할당하려고합니다.

다형성 직렬화에 대한 Jackson의 지원을 사용하여이를 수행하는 방법을 알 수 없습니다. 가능한가?

답변

0

JsonDeserializer<Container>을 구현할 수 있습니다.

"foo"필드가 ObjectNode 또는 TextNode인지 확인하고이를 기반으로 개체를 역 직렬화 할 방법을 선택할 수 있습니다.