2012-06-07 15 views
5

Dado el siguiente código:más simple Gson.fromJson ejemplo no

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

me sale ret conjunto de null.

Estoy seguro de que me he perdido algo obvio, ya que toJson con una clase también falla, aunque funciona a mano a través de JsonObject.

Respuesta

5

Declara tu clase retVal fuera del método.

+0

Doh! Sabía que tenía que ser un error estúpido. Eso funciona, gracias. ¿Puedes explicar * por qué * funciona, por favor? –

+3

GSON no permite la deserialización de clases locales. – Rajesh

1

Gson te ayuda a serializar objetos. Entonces, necesitas un objeto primero. Sobre la base de su enfoque, que quiere hacer algo como

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

Para recuperar el objeto de vuelta de la cadena:

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

Como mencioné en la pregunta, 'toJson' también falla, y la cadena procede de una API REST. El código funciona bien con la clase estándar 'JSONObject', pero pensé que sería refactorizado con' Gson' para ver cómo funcionaba. –

+0

bien, lo siento, entendí mal. – stpn108