2012-06-07 3 views
5

den folgenden Code Gegeben:Simplest Gson.fromJson Beispiel nicht

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

I ret Satz zu null bekommen.

Ich bin mir sicher, dass ich etwas offensichtliches verpasst habe, wie toJson mit einer Klasse auch fehlschlägt, obwohl Hand-Konstruktion durch JsonObject funktioniert.

Antwort

5

Erklären Sie Ihre Klasse retVal außerhalb der Methode.

+0

Doh! Ich wusste, dass es ein dummer Fehler sein musste. Das funktioniert, danke. Kannst du bitte erklären, warum * es funktioniert? –

+3

GSON erlaubt keine Deserialisierung von lokalen Klassen. – Rajesh

1

Gson hilft Ihnen, Objekte zu serialisieren. Also brauchst du zuerst ein Objekt. Basierend auf Ihrem Ansatz, wollen Sie so etwas wie

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

So rufen das Objekt wieder aus dem String tun:

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

Wie ich in der Frage erwähnt habe, "toJson" auch fehl, und die Zeichenfolge stammt aus einer REST-API. Der Code funktioniert gut mit der Standardklasse 'JSONObject', aber ich dachte, ich würde mit' Gson' umgestalten, um zu sehen, wie es funktioniert. –

+0

ok, sorry, ich habe das falsch verstanden. – stpn108

Verwandte Themen