反序列化在gson-2.1中工作,但不在gson-2.4.4中工作

时间:2014-01-30 19:08:08

标签: java json gson

我有这个片段:

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

想知道是否有人可以解释,或指出我做错了什么。

1 个答案:

答案 0 :(得分:2)

我不知道2.1,但如果它确实有效,那么Gson必须更改其默认Map实现,以便在将Map类型从HashMap反序列化时使用{ {1}}在gson-2.2.4中。

如果您想继续使用LinkedTreeMap,请在HashMap

中指定
TypeToken