2016-09-16 1 views
0

初にキャストすることはできません、私はここにgsonと自動入力値-gson延長自動入力値:ClassCastExceptionが発生:API、私は別のモデルを持っているAPIで<a href="https://github.com/rharter/auto-value-gson" rel="nofollow">https://github.com/rharter/auto-value-gson</a></p> <p>:LinkedTreeMapはすべての

チェックして改造を使用していますid、descriptionなどのjsonとメッセージの配列を返しますが、これらのメッセージはソーシャルメディアの種類(Facebook、Twitter、Instagramなど)に応じて異なる場合があります。だから、私はこのようなモデルを作った:

@AutoValue 
public abstract class SocialStream<T> { 
    public abstract int id(); 
    ...... 
    ...... 

    public abstract List<T> messages(); 

    public static <T> TypeAdapter<SocialStream<T>> typeAdapter(Gson gson, TypeToken<? extends SocialStream<T>> typeToken) { 
    return new AutoValue_SocialStream.GsonTypeAdapter(gson, typeToken); 
    } 
} 

あなたは私も自動入力値typeAdapterにtypetoken渡され、すべてが動作しているようですが、私はすでに全体のJSONを記録し、私は私のモデルとしてそれを使用しようとすると問題が発生見ることができるように。

SocialStream<FacebookPost> post = getList().get(0); 

方法GETLIST()は、これらのメッセージの配列を返し、これは私が例外を取得していラインです:

java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.example.model.FacebookPost 
at 

答えて

0

私は私のような正確に同じ問題を抱えています。 Gsonは内部の実際のクラスについて全く知らないため、キーはカスタマイズされたデシリアライザを作成しています。 試着する https://stackoverflow.com/a/34685986/2458190

関連する問題

 関連する問題