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

LinkedHashMap 换为 String 的方法是使用 JSON 库将 LinkedHashMap 对象换为 JSON 字符串。可以使用以下步骤完成换: 1. 导入 JSON 库:首先,需要导入 JSON 库,例如 Jackson、Gson 或者 JSON.simple。 2. 创建 LinkedHashMap 对象:创建一个 LinkedHashMap 对象,并向其中添加需要的键值对。 3. 换为 JSON 字符串:使用 JSON 库提供的方法,将 LinkedHashMap 对象换为 JSON 字符串。 下面是一个示例代码片段,展示了如何将 LinkedHashMap 换为 String: ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.util.LinkedHashMap; public class Main { public static void main(String[] args) throws Exception { // 创建 LinkedHashMap 对象 LinkedHashMap<String, Object> linkedHashMap = new LinkedHashMap<>(); linkedHashMap.put("key1", "value1"); linkedHashMap.put("key2", "value2"); // 使用 Jackson 库将 LinkedHashMap 换为 JSON 字符串 ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString(linkedHashMap); // 打印换后的 JSON 字符串 System.out.println(jsonString); } } ``` 在上述示例代码中,我们使用了 Jackson 库将 LinkedHashMap 对象换为 JSON 字符串。你可以根据需要选择合适的 JSON 库完成换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [StringToHashMap:根据一组规则将字符串换为hashmap。 快速创建。 添加了单元测试和UI测试](https://download.csdn.net/download/weixin_42106357/15034004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Fegin调用的时候数据格式换为linkedHashMap](https://blog.csdn.net/weixin_45853881/article/details/126762327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值