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格式。
在这里插入图片描述

posted @ 2024-05-11 17:39  御坂10027  阅读(15)  评论(0)    收藏  举报  来源