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

如何批量转义对象内双引号?解决JSON解析HTML标签报错问题

嘿,这个问题我太懂了!手动转义一堆双引号简直是体力活,给你几个省心的解决方案:

方案1:直接用JS对象导出(最推荐)

既然你是在JS模块里用,完全没必要把HTML塞进JSON字符串再解析——直接定义一个JS对象就行,这样HTML里的双引号根本不需要转义,代码可读性还更高:

export const HTMLTags = {
  h1s: {
    greating1: '<h1 id="ms1" class="ms">ABC</h1>',
    greating2: '<h1 id="ms2" class="ms">XYZ</h1>',
    // ...其他标签
    greatingx: '<h1 id="msX" class="ms">QWE</h1>'
  }
};

用的时候直接访问HTMLTags.h1s.greating1就好,省掉了JSON.parse的步骤,也彻底规避了转义问题。

方案2:用工具/脚本自动转义双引号

如果因为某些原因必须用JSON字符串格式,别手动转,用工具批量处理:

在线工具

找个靠谱的JSON转义工具,把你原始的HTML标签内容贴进去,一键就能把所有内部双引号转成\",直接复制回来用就行。

本地脚本(Node.js)

写个10行以内的小脚本自动处理:

// 把你原始的JSON字符串放这里
const rawStr = `{ "h1s": { "greating1": "<h1 id="ms1" class="ms">ABC</h1>", "greating2": "<h1 id="ms2" class="ms">XYZ</h1>", "greatingx": "<h1 id="msX" class="ms">QWE</h1>" } }`;

// 正则匹配HTML属性里的双引号并转义(避开JSON结构本身的双引号)
const escapedStr = rawStr.replace(/(?<=id=|class=)"/g, '\\"');

console.log(escapedStr);

运行这个脚本,输出的就是已经转义好的JSON字符串,直接替换你的HTMLTags就行。

方案3:改用单引号包裹HTML属性

HTML里属性用单引号也是完全合法的,把HTML里的双引号换成单引号,这样JSON字符串里的双引号就不会冲突了:

export const HTMLTags = `{ "h1s": { "greating1": "&lt;h1 id='ms1' class='ms'&gt;ABC&lt;/h1&gt;", "greating2": "&lt;h1 id='ms2' class='ms'&gt;XYZ&lt;/h1&gt;", "greatingx": "&lt;h1 id='msX' class='ms'&gt;QWE&lt;/h1&gt;" } }`;

这样JSON.parse就能正常解析,不用转义任何引号。

为啥你原来的代码会报错?

简单说:JSON要求字符串必须用双引号包裹,而你HTML属性里的双引号没转义,比如"greating1": "&lt;h1 id="ms1"..."这里,JSON解析器看到id="后面的双引号,会误以为这个JSON字符串已经结束了,后面的ms1就变成了无效语法,所以才会报Unexpected token x in JSON错误。

总结一下,方案1是最优解,既简单又不用折腾转义的事,强烈推荐!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:45