使用GSON时不兼容的类型

时间:2012-09-21 08:42:32

标签: java json gson

首先:这是我第一次使用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的情况下编译它。

2 个答案:

答案 0 :(得分:3)

尝试制作内部课程static,或者您需要InstanceCreator

中所述的自定义{{1}}
  

Gson不能自动反序列化纯内部类   他们的无参数构造函数也需要对包含的引用   反序列化时不可用的对象。您可以   通过使内部类静态或通过使用来解决此问题   为它提供自定义InstanceCreator。

答案 1 :(得分:1)

对我而言,它会编译,但我必须将GSON替换为Gson。要么你在写这个问题时马虎,要么你正在使用一些我从未听说过的“GSON”。

你的responseString ???

一旦你开始运行,你就需要Vrushank Desai的答案。