2012-09-21 103 views
0

首先:這是我第一次使用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的情況下編譯它。

+0

什麼值的迴應? –

+0

這並不重要,因爲它是一個編譯器錯誤。響應是我在運行時從服務器獲得的字符串。但是因爲錯誤發生在應用程序運行之前,所以實際上從未獲得該值。 – 11684

回答

1

對我來說,它編譯,但我不得不Gson替換GSON。在寫這個問題時你要麼很sl or,要麼你使用了一些我從未聽說過的「GSON」。

是你的response a String ???

一旦你得到它,你需要Vrushank Desai的答案。

+0

寫這個問題時我很sl ... ... – 11684

+0

是的,響應是一個字符串,但是AFAIK這是一個編譯器錯誤,所以響應的值永遠不會從問題中檢索出來。 – 11684

+0

但是,這並不改變課程的類型...在早上太早寫了評論。 – 11684

3

試着讓你的內部類static或者你需要一個定製InstanceCreator它在規定的Gson User Guide

GSON不能自動從 反序列化純內部類的無參數的構造函數也需要一個參考包含 的對象在反序列化時不可用。您可以通過 來解決此問題,方法是使內部類爲靜態,或者由 爲其提供自定義InstanceCreator。

+0

這不起作用,它仍然說'不兼容的類型'。我希望XCode 2.5有更多的信息。 – 11684

+0

這是一個有趣的工具(或者你不能使用它)。通常情況下,這樣的問題需要花費幾秒鐘的時間,通常在eclipse中按下「ctrl-1」可以解決這個問題。 – maaartinus