1

まず、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 
4

1 に答える 1