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

为何无法将JSON.stringify输出的字符串解析为JS字符串?

JSON.parse解析含XML/HTML的字符串报错的原因及解决办法

你遇到的这个报错,核心原因是手动添加双引号和转义的操作破坏了JSON的语法规范,导致JSON解析器无法识别正确的字符串结构。

常见的手动操作失误点:

  • 内部双引号未转义:XML/HTML里通常会有属性双引号(比如<img src="pic.jpg">),你手动给整个字符串套外层双引号后,这些内部双引号没有用\"转义,解析器会误认为字符串在这里就结束了,直接触发语法错误。
  • 转义符号错误:比如把转义符写成了"\"(顺序错了),或者多转义了不需要处理的字符(比如把<转成\<,JSON里并不需要转义这个),导致解析器无法识别有效字符。
  • 控制字符未处理:XML/HTML里的换行、制表符等不可见字符,在JSON字符串里必须转成\n、\t,如果直接保留原始换行,解析器会判定为无效语法。

正确的处理方式:

完全不需要手动干预,让JSON工具自己处理转义和包裹:

  1. 先把你的XML/HTML字符串用JSON.stringify()处理,它会自动完成双引号包裹和内部特殊字符转义:
// 原始XML/HTML字符串
const xmlHtmlStr = '<div class="content"><p>test</p></div>';
// 自动转成符合JSON规范的字符串
const validJsonStr = JSON.stringify(xmlHtmlStr);
  1. 之后需要解析时,直接用JSON.parse()就能还原原始字符串:
const parsedStr = JSON.parse(validJsonStr);
// parsedStr就是最初的XML/HTML内容

如果一定要手动修复已有的错误字符串,逐一检查:

  • 确保整个字符串被一对双引号包裹,且没有遗漏
  • 内部所有双引号都替换成\"
  • 所有反斜杠替换成\\(如果原始内容里有反斜杠的话)
  • 把换行、回车替换成\n、\r

内容的提问来源于stack exchange,提问作者F. Zer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:43:09