Json字符串多了双引号兼容方案 解析

Json字符串多了双引号兼容方案 解析

问题分析

问题所在:
这个字符串的最外层多了一对双引号!它应该是一个 JSON 对象,但现在是一个被引号包裹的字符串。

- ❌ 错误格式(当前):`"{\"orderNo\":...}"` - 这是一个字符串
- ✅ 正确格式:`{"orderNo":...}` - 这才是 JSON 对象

解决方案

需要在解析前去除外层的多余引号。

//decryptedData:解密后的字符串 处理可能的外层多余引号
            if (decryptedData != null && decryptedData.startsWith("\"") && decryptedData.endsWith("\"")) {
                log.warn("检测到 decryptedData 外层有多余引号,进行清理");
                decryptedData = decryptedData.substring(1, decryptedData.length() - 1);
                // 处理转义字符,将 \" 替换为 "
                decryptedData = decryptedData.replace("\\\"", "\"");
                log.info("清理后的 decryptedData: {}", decryptedData);
            }
            
            // 3. 解析业务参数
            CreateDepositFreeRequest depositRequest = JSON.parseObject(decryptedData, CreateDepositFreeRequest.class);

根本原因
这个问题可能是由以下原因之一导致的:

1. 加密前的数据就被双引号包裹了 - 发送方在加密时对 JSON 字符串进行了序列化,导致多了一层引号
2. 加密算法的问题 - 某些加密实现会在输出时添加额外的引号

验证方法

修改后,日志会显示:
- 清理前的原始数据(带外层引号)
- 清理后的数据(正确的 JSON)

posted on 2026-03-25 12:07  oktokeep  阅读(0)  评论(0)    收藏  举报