2012-10-11 3 views
1

웹 서비스에서 JSON 백을 검색하고 있습니다. 때로는 JSON의 속성이 객체로 반환되고 다른 때에는 객체의 배열입니다. 이 속성을 Jackson의 ObjectMapper으로 올바르게 deserialize하기 위해 deserialize 할 Java 클래스를 작성하려면 어떻게해야합니까? ObjectMapper를 사용하여이 작업을 수행 할 수 있습니까? 객체와Jackson은 간헐적으로 배열이있는 JSON을 비 직렬화합니다.

JSON : 컬렉션

"results": { 
    "account": { 
     "expiration": "2012-11-16" 
    } 
} 

JSON

당신은 자바 배열 또는 Collection 등의 속성을 표시하고 기능 ACCEPT_SINGLE_VALUE_AS_ARRAY 활성화해야
"results": { 
  "account": [{ 
    "expiration": "2012-11-16" 
    }] 
} 
+0

'비 작동'솔루션을 우리와 공유하는 방법은 무엇입니까? – aviad

+0

다형 객체를 처리해야하는 내 질문 [this] (http://stackoverflow.com/q/12450404/823393). 기본적으로 자체 서명 코드로 디시리얼라이저를 향상시켜야합니다. – OldCurmudgeon

+0

이 특별한 경우에는 사용자 지정 디시리얼라이저를 추가 할 필요가 없습니다. IMO 같은 비 OO JSON 구조는 약간 나쁘다. – StaxMan

답변

4

:

ObjectMapper mapper = new ObjectMapper(); 
mapper.enable(DeserializationFeature. ACCEPT_SINGLE_VALUE_AS_ARRAY); 
ResultOb ob = mapper.readValue(jsonInput, ResultOb.class); 

하나의 JSON 객체가 발생하면 단일 요소 JSON Array처럼 처리됩니다.

+0

Doh. 저처럼 설정을 위해 잭슨 1.7.9에 대한 자바 문서를 살펴 봤지만 아무 것도 보지 못했습니다. 최신 문서를 항상보아야합니다. 감사! – Glide

+0

사실, 이것은 비교적 새로운 기능입니다. – StaxMan

관련 문제