2012-06-07 45 views
5

考慮下面的代碼:最簡單的例子Gson.fromJson失敗

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

我得到ret設置爲null

我敢肯定,我錯過了一些明顯的事情,因爲toJson與一個類也失敗了,雖然通過JsonObject工作手工施工。

回答

5

在方法外聲明您的類retVal

+0

衛生署!我知道這應該是一個愚蠢的錯誤。這有用,謝謝。你能解釋一下爲什麼它能起作用嗎? –

+3

GSON不允許本地類的反序列化。 – Rajesh

1

Gson幫助您序列化對象。所以,你首先需要一個對象。根據你的方法,你想要做的事就像

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

從字符串檢索對象返回:

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

正如我在問題中提到的,'toJson'也失敗了,字符串來自REST API。該代碼可以與標準的'JSONObject'類一起工作,但我想我會用'Gson'來重構它的工作原理。 –

+0

好的,對不起,我弄錯了。 – stpn108