首先:这是我第一次使用GSON。
尝试解析一些JSON,我得到了“不兼容的类型”......
Gson gson = new Gson();
PlayerData data = gson.fromJson(response, PlayerData.class); // Incompatible types...
PlayerData
是一个内部类:
class PlayerData {
public Point position;
public String mapname;
public int level;
public PlayerData() {}
}
是什么原因造成的?在GSON文档中,显然有一种方法public <T> T fromJson(String json,
Class<T> classOfT)
throws JsonSyntaxException
,我在(AFAIK)就像谷歌的GSON用户指南一样。
修改
XCode做了一些奇怪的事情,当我尝试使用Terminal
进行编译时,一切正常,除了我对服务器的请求,导致一些NPE的原因,因为response
仍然是空的。感谢maaartinus,我了解到不应该是一个编译器错误,所以我试着在没有XCode的情况下编译它。
答案 0 :(得分:3)
尝试制作内部课程static
,或者您需要InstanceCreator
Gson不能自动反序列化纯内部类 他们的无参数构造函数也需要对包含的引用 反序列化时不可用的对象。您可以 通过使内部类静态或通过使用来解决此问题 为它提供自定义InstanceCreator。
答案 1 :(得分:1)
对我而言,它会编译,但我必须将GSON
替换为Gson
。要么你在写这个问题时马虎,要么你正在使用一些我从未听说过的“GSON”。
你的response
是String
???
一旦你开始运行,你就需要Vrushank Desai的答案。