まず、gson と autovalue-gson 拡張でレトロフィットを使用しています
ここをチェックしてください:https://github.com/rharter/auto-value-gson
APIには、APIがid、説明など、メッセージの配列を含む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);
}
}
ご覧のとおり、typetoken も AutoValue typeAdapter に渡しましたが、すべてが機能しているように見えます。既に 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