本文主要是介绍Java - Json字符串转List<LinkedHashMap<String,String>>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
需求:在处理数据时,需要将一个Object类型对象集合转为有序的Map类型集合。
一、问题
1.原代码:
但在使用时出现报错:
Incompatible equality constraint: LinkedHashMap<String, String> and LinkedHashMap
不兼容的相等约束:LinkedHashMap<String,String>和LinkedHashMap
/*** 将表格转化为map集合** @return map集合*/public List<LinkedHashMap<String, String>> getListMap(List<Object> list) {String jsonObj = JSON.toJSONString(list);return JSON.parseArray(jsonObj, LinkedHashMap.class);}
2.根据idea提示修改返回格式
修改为List,则无法加入定义为Map<Integer, List<LinkedHashMap<String, String>>>的Map对象中。
public List<LinkedHashMap> getListMap() {String jsonObj = JSON.toJSONString(list);return JSON.parseArray(jsonObj, LinkedHashMap.class);}
二、格式转换
1.先将集合从JsonArray强制转为List<LinkedHashMap<String,String>>格式
2.对其进行遍历,将数据加入提前初始化的List<LinkedHashMap<String,String>>集合中。
/*** 将list转化为有序的map集合** @return map集合*/public List<LinkedHashMap<String, String>> getListMap(List<Object> list) {List<LinkedHashMap<String, String>> resList = new ArrayList<>();String jsonObj = JSON.toJSONString(list);// 将json字符串转为List<LikedHashMap<String,String>>List<LinkedHashMap<String,String>> listObjectFir = (List<LinkedHashMap<String,String>>) JSONArray.parse(jsonObj);for(Map<String,String> mapList : listObjectFir){LinkedHashMap<String,String> resMap = new LinkedHashMap<>();for (Map.Entry entry : mapList.entrySet()){resMap.put(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));}resList.add(resMap);}return resList;}
Q&A
listObjectFir 定义为List<LinkedHashMap<String,String>>格式,为什么不可以直接返回?
答:若直接返回实际上还是JsonArray格式。
这篇关于Java - Json字符串转List<LinkedHashMap<String,String>>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!