You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JSON.stringify处理含a标签outerHTML的多维数组时出现转义异常

问题:JSON.stringify处理含outerHTML的多维数组时出现双重转义符导致JSON无效

我尝试对包含字符串和锚点标签outerHTML的多维数组执行JSON.stringify操作,但outerHTML文本中被添加了双重转义符\,导致生成无效JSON。

代码示例

const a = document.getElementsByTagName('a')[0].outerHTML;
const array = [["a", a],["b", a],["c", a]];
const json = JSON.stringify(array);

执行结果

'[["a","<a href=\\"https://www.google.com/\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">Link</a>"], 
["b","<a href=\\"https://www.google.com/\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">Link</a>"], 
["c","<a href=\\"https://www.google.com/\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">Link</a>"]]'
解决方法

首先明确:你看到的双重转义符是控制台打印时的显示效果,并非实际JSON字符串中的内容。JSON.stringify会为了符合JSON格式要求,对字符串内部的双引号添加单个转义符\,而控制台在展示字符串字面量时,会把这个转义符再转义一次(显示为\\),这只是视觉表现,实际生成的JSON是完全有效的。

你可以通过解析验证这一点:

const parsed = JSON.parse(json);
console.log(parsed); // 能正常解析,说明JSON格式没问题

如果要将这个JSON用于写入文件、发送请求等场景,直接使用json变量即可,它的实际内容符合JSON规范,不存在双重转义。

另外注意代码里的拼写错误:getElementByTagName应该改为getElementsByTagName(缺少字母s),修正后才能正确获取页面中的锚点元素。

内容的提问来源于stack exchange,提问作者javascriptgotmecrazy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:50:23