我之前已经在这里问过类似的问题,但解决方案here,here和here对我来说确实没什么用处,因为它们处理的是包含的通用列表单一类型的列表。
我有一个类似下面的POJO,我使用Gson.toJson()
解析为JSON,将我的数据库表保存为字符串并使用Gson.fromJson()
将其恢复。
public class MyClass implements Serializable{
private HashMap<String, List> statistic;
@SuppressWarnings("rawtypes")
public void setStatistic(HashMap<String, List> statistic) {
this.statistic = statistic;
}
@SuppressWarnings("rawtypes")
public HashMap<String, List> getStatistic() {
return statistic;
}
}
这是问题所在。 HashMap中的通用List
包含以下信息。
List<ClassOne> one = new ArrayList<ClassOne>();
List<ClassTwo> two = new ArrayList<ClassTwo>();
HashMap<String, List> list = new HashMap<String, List>();
list.put("one", one);
list.put("two", two);
现在当我将JSON解析回MyClass
时,我用通用列表返回HashMap。但有关ClassOne
和ClassTwo
的信息丢失了,我只是将其中的信息作为LinkedTreeMap获取,而这些信息无法通过
MyClass myObject = gson.fromJson(jsonString, MyClass.class);
HashMap<String, List> statistic = myObject.getStatistic();
List<ClassOne> one = (List<ClassOne>) statistic.get("one");
List<ClassTwo> one = (List<ClassTwo>) statistic.get("two");
我该如何解决这个问题?我无法将POJO的结构更改为两个ArrayLists而不是一个HashMap,所以我坚持这个。