2012-11-30 7 views
7

Próbowałem ocenić funkcję GWT Autobean, aby zdekodować/zakodować obiekt JSON do obiektów domenowych dla wywołań REST.GWT Autobean - jak obsługiwać listy?

Wzorem: http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart

byłem w stanie konwertować osobliwy obiekt JSON do obiektu domeny:

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

gdzie JsonResources.INSTANCE.json() zwraca ciąg JSON.

Jednak nie udało mi się przekonwertować listy obiektów Person z JSON.

Byłoby pomocne, jeśli ktoś ma tego przykład?

Dzięki!

Odpowiedz

17

Cóż, jedyny sposób, jaki mogę wymyślić, to stworzyć specjalny autoban, który będzie miał właściwość List<Person>. Na przykład:

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

i Przykład json wyrażenie:

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

UPDATE: Obejście gdy wejście JSON jest tablicą (jak sugeruje persons[0] w komentarzach) .E.g. JSON wygląda następująco:

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

I analizowania kod wygląda następująco:

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

+1 dla przykładowego kodu ;-) –

+3

I aby obejść ten problem bez zmiany JSON: 'AutoBeanCodex.decode (factory, Result.class; "{\" persons \ ":" + json + "}"). getPersons() ' –

+0

Jest to technika, której używam w moich autorach. Ale myślę, że zastosuję technikę stworzoną przez @ThomasBroyer. – Jonathan