如何移除JSON嵌套值中的" 将字符串型数组转为原生JSON结构
嵌套字符串JSON还原为原生结构方案
核心问题说明
你遇到的是典型的JSON多重序列化问题:data、origin字段的数组内容被额外序列化成了带引号的字符串,直接删除引号极易破坏JSON转义规则导致语法错误,正确处理方式是逐层反序列化,而非硬替换特殊字符。
处理步骤
- 第一步:对最外层源JSON做第一次反序列化,此时得到的对象中,
data字段为字符串类型 - 第二步:对
data字段的字符串值做第二次反序列化,得到原生数组结构,此时数组内对象的origin字段仍为字符串类型 - 第三步:遍历
data解析后的数组,对每个对象的origin字段值做第三次反序列化,替换原有字符串值 - 第四步:如需输出标准JSON字符串,对最终处理完成的对象做一次序列化即可
代码实现
JavaScript/Node.js 版本
// 替换为你实际拿到的源JSON字符串即可 const sourceStr = `{ "data": "[{\"color\":\"blue\",\"origin\":\"[{\\"state\\":\\"USA\\"},{\\"state\\":\\"AFRICA\\"}]\"}]" }` // 逐层解析 const result = JSON.parse(sourceStr) result.data = JSON.parse(result.data) result.data.forEach(item => { item.origin = JSON.parse(item.origin) }) // 输出最终合规JSON const targetJson = JSON.stringify(result, null, 2) console.log(targetJson)
Python 版本
import json # 替换为你实际拿到的源JSON字符串即可 source_str = '{"data": "[{\\"color\\":\\"blue\\",\\"origin\\":\\"[{\\"state\\":\\"USA\\"},{\\"state\\":\\"AFRICA\\"}]\\"}]"}' # 逐层解析 result = json.loads(source_str) result["data"] = json.loads(result["data"]) for item in result["data"]: item["origin"] = json.loads(item["origin"]) # 输出最终合规JSON target_json = json.dumps(result, indent=2, ensure_ascii=False) print(target_json)
注意事项
禁止直接使用全局字符串替换删除引号:嵌套JSON内部存在大量转义字符,硬替换会直接破坏JSON语法结构,逐层调用官方JSON解析方法是兼容性最高、不会出现语法错误的方案,不管嵌套多少层字符串格式的JSON内容,都可以用该方法逐层还原。
内容的提问来源于stack exchange,提问作者ssDev
相关产品推荐
相关产品推荐

