首先,我正在使用带有 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