【发布时间】:2013-01-23 14:23:55
【问题描述】:
使用 Gson,我试图反序列化一个嵌套的泛型类。类结构如下所示:
包装器对象,简化,但通常包含其他属性,例如 statusMessage,这些属性与服务器的 data 字段一起返回:
public class Response<T> {
private List<T> data = null;
public List<T> getData() { return this.data; }
}
简单类,来自上述data-field 的预期输出(虽然是一个数组):
public class Language {
public String alias;
public String label;
}
用法:
Type type = new TypeToken<Response<Language>>() {}.getType();
Response<Language> response = new Gson().fromJson(json, type);
List<Language> languages = response.getData();
Language l = languages.get(0);
System.out.println(l.alias); // Error occurs here
其中json 变量是something like this。
但是,在执行此操作时,我收到以下异常(在第 3 行,最后一个代码示例):
ClassCastException:com.google.gson.internal.StringMap 无法转换为 book.Language
仅当将来自getData() 的数据存储到变量中(或用作变量时)时才会发生异常。
任何帮助将不胜感激。
【问题讨论】:
标签: java oop generics deserialization gson