我正在编写一个将连接到服务器并基于一些参数的类,检索一个 json 字符串,该字符串将使用 GSON 解析到指定的(通过泛型)类。
负责类的精简版如下所示:
class Executor<T> {
private Response<T> response;
public void execute() {
Type responseType = new TypeToken<Response<T>>() {}.getType();
this.response = new Gson().fromJson(json, responseType);
}
public Response<T> getResponse() { return this.response; }
}
(-JSON
变量看起来像这样。)
反序列化后存储数据的类如下所示:
class Response<T> {
private List<T> data = null;
public List<T> getData() { return this.data; }
}
数据试图反序列化的类:
public class Language {
public String alias;
public String label;
}
运行的代码利用了上面的类:
Executor<Language> executor = new Executor<Language();
List<Language> languages = executor.execute().getResponse().getData();
System.out.println(languages.get(0).alias); // exception occurs here
这导致以下异常
ClassCastException:com.google.gson.internal.StringMap 无法转换为 sunnerberg.skolbibliotek.book.Language
非常感谢任何帮助或建议!