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

JSON.parse解析失败报错,已转义引号仍无法解析的原因咨询

问题根源:JavaScript字符串转义与JSON转义的冲突

嘿,这个坑我之前也踩过!问题出在JavaScript字符串字面量的转义优先级比JSON转义高,导致你写的转义符被提前处理了,没传到JSON.parse里。

具体原因分析

你写的代码里,用单引号包裹了JSON字符串:

var jsobj = JSON.parse( '{"lineID":11,"siteID":3,"mystring":"this is a \"Test\" string with quotes"}' );

当JavaScript解析这个单引号字符串时,里面的\"会被直接转换成普通的双引号"。也就是说,实际传给JSON.parse的字符串是这样的:

{"lineID":11,"siteID":3,"mystring":"this is a "Test" string with quotes"}

这下JSON里的双引号就没被正确转义,自然触发了SyntaxError。

而在线解析器能正常工作,是因为它直接读取你输入的原始字符串,没有经过JavaScript的字面量解析步骤,所以\"被当作合法的JSON转义符处理。

两种解决方案

方案1:双重转义反斜杠

把字符串里的\"改成\\",这样JavaScript解析后会保留一个\,传给JSON.parse的就是正确的转义双引号:

var jsobj = JSON.parse( '{"lineID":11,"siteID":3,"mystring":"this is a \\"Test\\" string with quotes"}' );

方案2:使用模板字符串(反引号包裹)

模板字符串不会解析里面的\"转义符,直接把原始内容传给JSON.parse,写法更简洁:

var jsobj = JSON.parse( `{"lineID":11,"siteID":3,"mystring":"this is a \"Test\" string with quotes"}` );

试试这两种方法,应该就能正常解析啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:47:21