2016-07-26 72 views
0

查看Stackoverflow問題後,我找不到解決此問題的任何解決方案。java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap無法轉換爲模型

我試圖使用GSON並實施這樣的通用方法:

public <T> List<T> deserializeList(String json) { 
    Gson gson = new Gson(); 
    Type type = (new TypeToken<List<T>>() {}).getType(); 
    return gson.fromJson(json, type); 
} 

調用此方法是通過這樣做:

parser.<Quote>deserializeList(result) 

不過,我得到的結果是這樣的:

enter image description here

當我我試圖訪問一個對象,我得到這個錯誤:

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to model.Quote 

的JSON字符串是:

[ 
    { 
     "id": 269861, 
     "quote": "People living deeply have no fear of death.", 
     "author": "Anais Nin", 
     "genre": "life", 
     "tag": null, 
     "createdAt": "2016-04-16T13:13:36.928Z", 
     "updatedAt": "2016-04-16T13:13:36.928Z" 
    } 
] 
+0

我不認爲這就是你應該如何調用類型參數 –

+0

@ cricket_007有沒有關係 - parser.deserializeList(result) – codebased

+0

這就是我的想法。現在,類定義中的T是什麼?第二個問題,你可以使用Retrofit嗎? –

回答

1

我想你可以寫的方法,像這樣明確地提供Type

public <T> List<T> deserializeList(String json, Type type) { 
    Gson gson = new Gson(); 
    return gson.fromJson(json, type); 
} 

雖然,通過(new TypeToken<List<Model>>() {}).getType();看起來有點凌亂。

我不太熟悉類型擦除,但我敢打賭,這與問題有關。

相關問題