2012-06-07 2 views
5

Dato il seguente codice:più semplice Gson.fromJson esempio non riesce

final class retVal { int photo_id; } 
Gson gson = new Gson(); 
retVal ret = gson.fromJson("{\"photo_id\":\"383\"}", retVal.class); 

ottengo ret insieme a null.

Sono sicuro che ho perso qualcosa di ovvio, come toJson con una classe fallisce anche se la costruzione della mano attraverso JsonObject funziona.

risposta

5

Dichiarare la classe retVal al di fuori del metodo.

+0

Doh! Sapevo che doveva essere uno stupido errore. Funziona, grazie. Puoi spiegare * perché * funziona, per favore? –

+3

GSON non consente la deserializzazione delle classi locali. – Rajesh

1

Gson consente di serializzare gli oggetti. Quindi, prima hai bisogno di un oggetto. Sulla base di vostro approccio, si vuole fare qualcosa di simile

RetVal myRetVal = new RetVal(); 
Gson gson = new Gson(); 
String gsonString = gson.toJson(myRetVal); 

per recuperare l'oggetto indietro dalla stringa:

Gson gson = new Gson(); 
RetVal myNewRetValObj = gson.fromJson(gsonString, RetVal.class); 
+0

Come ho detto nella domanda, anche 'toJson' ha esito negativo e la stringa proviene da un'API REST. Il codice funziona bene con la classe standard 'JSONObject', ma ho pensato di fare il refactoring con' Gson' per vedere come funzionava. –

+0

ok, scusa, ho sbagliato. – stpn108