业务场景:调用一个方法返回一个List,List中存放不同类型的集合,若想使用这些集合,则需要对它们进行反序列化从而获取泛型参数。
public List resultProccessed (){
Map<String, Teacher> teacherList= new HashMap<>();
List<String> nameList= new ArrayList<>();
Map<String, Map<String, List<Student>>> StudentList;
/*****假设已经做过业务处理,上述List和Map中都以存在对应的值******/
List all=new ArrayList();
all.add(StudentList);
all.add(teacherList);
all.add(nameList);
return all;
}
public void use(){
List all= resultProccessed();
Map<String,Map<String,List<DWB3A0>>> packIdOfPlanPutinIdMap=JSONObject.parseObject(StringEscapeUtils.unescapeJava(JSON.toJSONtring(all.get(0))),new TypeReference<Map<String, Map<String, List<Student>>>>(){});
Map<String, Teacher> totalOfPlanAndOrd=JSONObject.parseObject(StringEscapeUtils.unescapeJava(JSON.toJSONString(all.get(1))),new TypeReference<Map<String, Teacher>>(){});
List<String> nameList=JSONObject.parseObject(StringEscapeUtils.unescapeJava(JSON.toJSONString(all.get(2))),new TypeReference<List<String>>(){});
}
需要注意的是在取到对象以后,需要先将它转换为string,在去掉它多余的转义字符【StringEscapeUtils.unescapeJava(JSON.toJSONtring(all.get(0))】,否则反序列化时会报错。