程序中有一个复杂的对象数据要保存起来,我们把这个对象用GSON转成字符串,然后直接存进数据库的一个CLOB字段作为持久化。下次使用的时候,直接取出,然后借助GSON转成Java对象,对于简单的Java对象,GSON的互转都是没有问题的。但是我的这个结构嵌套层级有点多,Java数据类型是:
Map<String, Collection<LinkedHashMap<String, String>>>
在使用
new Gson().fromJson(advData.getDataString(), Map.class);
转成Java对象的时候就报了:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap
Google了一阵子,网友给出的方案是:
Map<String, Collection<LinkedHashMap<String, String>>> advDataMap = new Gson().fromJson(advData.getDataString(), new TypeToken<Map<String, Collection<LinkedHashMap<String, String>>>>() {}.getType());