2012-11-30 5 views
7

저는 REST 호출을 위해 JSON 객체를 도메인 객체로 디코딩/인코딩하는 GWT Autobean 기능을 평가하려고했습니다. 예 다음GWT Autobean - 목록을 처리하는 방법?

: http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart 나는 도메인 개체에 단일 JSON 개체를 변환 할 수 있었다

:

AutoBean<Person> personBean = AutoBeanCodex.decode(factory, Person.class, JsonResources.INSTANCE.json().getText()); 

JsonResources.INSTANCE.json()는 JSON 문자열을 반환합니다.

그러나 Person 개체 목록을 JSON에서 변환하지 못했습니다.

누구나 예제가 있다면 도움이 될 것입니다.

감사합니다.

답변

17

내가 생각할 수있는 유일한 방법은 List<Person> 속성을 갖는 특별한 autobean을 만드는 것입니다.

public interface Result { 
    void setPersons(List<Person> persons); 
    List<Person> getPersons(); 
} 

예를 JSON 문자열 :

{ 
    persons:[ 
     {"name":"Thomas Broyer"}, 
     {"name":"Colin Alworth"} 
    ] 
} 

UPDATE : .E.g을 (코멘트 persons[0] 의해 제안) 입력 JSON가 배열 해결 예. JSON은 다음과 같습니다

[{"name":"Thomas Broyer"},{"name":"Colin Alworth"}] 

그리고 파싱 코드는 다음과 같습니다 : 샘플 코드에 대한

AutoBeanCodex.decode(factory, Result.class, "{\"persons\": " + json + "}").getPersons(); 
+1

+1 ;-) –

+3

그리고 JSON 변경하지 않고 문제를 해결하기 위해'AutoBeanCodex.decode를 ("{\"persons \ ":"+ json + "}"). getPersons()' –

+0

이것은 내 autobeans에서 사용하는 기술입니다. 하지만 저는 @ThomasBroyer가 만든 기술을 적용 할 것입니다. – Jonathan