2016-07-26 21 views
0

Stackoverflowの質問を見て、私はこの問題を解決する解決策を見つけることができませんでした。java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMapはモデルにキャストできません

私はGSONを使用しようとしています。このような一般的なメソッドを実装している:私は取得しています結果はしかし

parser.<Quote>deserializeList(result) 

:このメソッドへ

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

コールは、この介して行われますこの:

enter image description here

、いつI

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(結果) – 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();の周りを回るのは少し面倒ですが、

私はタイプ消去に慣れていませんが、問題に関連していると思います。

関連する問題