2011-10-28 3 views
7

Ho trovato questo articolo: http://www.dev-articles.com/article/Google-gson-and-list-of-objects-386003utilizzando GSON per analizzare e mettere in una lista di oggetti

Sembra che sta cercando di fare quello che voglio, che è analizzare il mio JSON e metterli in una lista di oggetti.

Quello che non ottengo, o forse l'articolo manca qualcosa, è come viene utilizzata la classe "Project". Sembra che venga fuori dal nulla.

EDIT:

Grazie a yorkw ora ho:

public static String parseJSONResponse(String jsonResponse) { 

     Type listType = new TypeToken<List<SingleEvent>>(){}.getType(); 
     List<SingleEvent> events = (List<SingleEvent>) Gson.fromJson(jsonResponse, listType); 


} 

Tuttavia Im ottenendo bandiere rosse sopra Type "Tipo non può essere risolto a un tipo"

+0

Stai ancora utilizzando JDK 1.4? [Tipo] (http://download.oracle.com/javase/1,5.0/docs/api/java/lang/reflect/ Type.html) è da JDK 1.5 – yorkw

+0

Non ricordo nemmeno cosa ho installato, ma era sicuramente nell'ultimo mese.Il compilatore dice 1.6 – Adam

+0

Bene, ho usato import java.lang.reflect.Type, che risolve il problema. seconda riga dà un errore dicendo che devo aggiungere SuppressWarnings che non fa nulla – Adam

risposta

11

Project è il modello di dominio. avete bisogno implementato per la deserializzazione stringa jSON:

Type listType = new TypeToken<List<Project>>(){}.getType(); 
List<Project> projects = (List<Project>) gson.fromJson(response, listType); 

È possibile utilizzare Generi c Tipo elenco come descritto in quell'articolo, in Eclipse, viene visualizzato un segno di spunta giallo "Elenco è un tipo non elaborato. I riferimenti all'elenco di tipi generici devono essere parametrizzati. "

+0

cosa succede se Progetto contiene campi privati ​​e ho metodi getter e setter. Funzionerà ancora? gson cerca automaticamente i metodi? – Adam

+0

ciò che hai descritto è esattamente come dovresti costruire la tua classe di dominio, GSON si prende cura di tutto punto (getter e setter). – yorkw

+0

Ottengo un sacco di errori con questo codice .. Non devo importare le librerie corrette. Mi vuole "Creare il metodo getType()". Ora è finito e ha qualcosa a che fare con Type – Adam