我有这个片段:
HashMap<String, List<ClassOne>> mappingMap = new HashMap<String, List<ClassOne>>();
String key = "pop";
ClassOne c1 = new ClassOne();
c1.setCategoryName("categoryName");
ArrayList<ClassOne> al = new ArrayList<ClassOne>();
al.add(c1);
mappingMap.put(key, al);
Gson gson = new Gson();
String data = gson.toJson(mappingMap);
HashMap<String, List<ClassOne>> dmm = gson.fromJson(data, new TypeToken<Map<String, List<ClassOne>>>() {}.getType());
当使用gson-2.1.jar运行时,它运行正常。当使用gson-2.2.4.jar运行时,我得到以下异常
java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap 无法在com ......
转换为java.util.HashMap
想知道是否有人可以解释,或指出我做错了什么。
答案 0 :(得分:2)
我不知道2.1,但如果它确实有效,那么Gson必须更改其默认Map
实现,以便在将Map
类型从HashMap
反序列化时使用{ {1}}在gson-2.2.4中。
如果您想继续使用LinkedTreeMap
,请在HashMap
。
TypeToken