2012-11-30 13 views
7

Ho cercato di valutare la funzione Autobean GWT per decodificare/codificare l'oggetto JSON in oggetti dominio per le chiamate REST.GWT Autobean - come gestire gli elenchi?

Seguendo l'esempio: http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart

ero in grado di convertire un oggetto JSON singolare a un oggetto di dominio:

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

dove JsonResources.INSTANCE.json() restituisce uno stringa JSON.

Tuttavia, non sono riuscito a convertire un elenco di oggetti Person da JSON.

Sarebbe utile, se qualcuno ne ha un esempio?

Grazie!

risposta

17

Beh, l'unico modo che posso pensare è di creare uno speciale autobean, che avrà la proprietà List<Person>. Ad esempio:

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

E stringa json esempio:

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

UPDATE: Soluzione quando l'ingresso JSON è un array (come suggerito da persons[0] nei commenti) .E.g. JSON è simile al seguente:

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

e l'analisi di codice simile a questo:

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

+1 per il vostro codice di esempio ;-) –

+3

E per aggirare il problema senza cambiare il JSON: 'AutoBeanCodex.decode (factory, Result.class; "{\" persons \ ":" + json + "}"). getPersons() ' –

+0

Questa è la tecnica che uso nei miei autobeans. Ma penso che applicherò la tecnica di @ThomasBroyer. – Jonathan

Problemi correlati