2012-06-07 46 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