0

第一:这是我第一次使用 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) 做,就像 Google 在它的 GSON 用户指南中一样。

编辑:
XCode 做了一些奇怪的事情,当我试图编译它时Terminal一切正常,除了我对服务器的请求,导致了几个 NPE,因为response仍然是空的。感谢 maaartinus,我了解到应该出现编译器错误,所以我尝试在没有 XCode 的情况下编译它。

4

2 回答 2

3

Try making your inner class static or you'll need a custom InstanceCreator for it as stated in the Gson User Guide

Gson can not automatically deserialize the pure inner classes since their no-args constructor also need a reference to the containing Object which is not available at the time of deserialization. You can address this problem by either making the inner class static or by providing a custom InstanceCreator for it.

于 2012-09-21T08:53:34.340 回答
1

对我来说它可以编译,但我必须GSONGson. 要么你在写这个问题时马虎,要么你使用了一些我从未听说过的“GSON”。

response的是String???

一旦你让它运行起来,你将需要 Vrushank Desai 的答案。

于 2012-09-21T14:57:27.223 回答