2012-04-04 2 views
1

im Json을 사용하여 일부 Json을 비동기 화합니다. 나는 커다란 json 문서를 읽고 블록을 꺼내서 잭슨에게 그 블록을 가져다가 json과 일치시키기 위해 내가 만든 객체 (실제로 중첩 된 배열이있는 여러 객체)에 역 직렬화하도록 말하고있다.배열을 사용하여 json을 비 직렬화

역 직렬화하여 코드 IM 문제가 때때로

addWidgetStrategy={"get":2,"spend":6,"textLabel":"bikes"} 

같은 해시 때로는 배열되는 블록의 값이있다

fooObject newFoo = mapper.readValue(newNode,fooObject.class); 

이다

addWidgetStrategy=[{"get":1.5,"spend":3,"textLabel":"thursday"},{"get":3,"spend":5,"textLabel":"tuesday"}] 

그래서 fooObject에서 고유 한 객체를 가진 addWidgetStrategy를 처리해야합니다. fooObject에서 나는 배열

를 역 직렬화하려고 할 때까지 나는

public List<addWidgetStrategy> addWidgetStrategy; 

가 배열만을위한 작동을 넣으면

public addWidgetStrategy addWidgetStrategy; 

위의 작품을 넣을 때 그 단 하나의 해시를 끊어지면

배열이나 단일 해시에 관계없이 어떻게 동일한 Json 요소 addWidgetStrategy를 구문 분석 할 수 있습니까? 배열

답변

2

이 있어야한다 :

fooObject[] newFoo = mapper.readValue(newNode,fooObject[].class); 

당신은 다음과 같이 읽을 수 있습니다

JsonNode jsonNode = mapper.readTree(json); 
    if (jsonNode.isArray()) { 
     fooObject[] newFoo = mapper.readValue(jsonNode,fooObject[].class); 
     ... 
    } else { 
     fooObject newFoo = mapper.readValue(jsonNode,fooObject.class); 
     .... 
    } 
관련 문제