首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON.parse(),为什么这个转义字符返回错误?

问JSON.parse(),为什么这个转义字符返回错误?
EN

Stack Overflow用户
提问于 2015-10-10 01:39:56
回答 2查看 297关注 0票数 0

我正在尝试更多地了解JSON.parse()方法的核心功能,但是我不明白为什么这个字符串返回一个错误:

代码语言:javascript
复制
JSON.parse('["foo\\"]');  // > "Unexpected end of input"

为什么不返回"foo\“

EN

回答 2

Stack Overflow用户

发布于 2015-10-10 01:41:31

因为字符串没有终止,因为\对第二个"进行了转义,因为您要解析的数据是:

代码语言:javascript
复制
["foo\"]

你可以自己确认这一点:

代码语言:javascript
复制
var s = '["foo\\"]';
alert(s);  // or
console.log(s);
票数 0
EN

Stack Overflow用户

发布于 2015-10-10 02:13:20

这是因为JS中的\和表达式中的JSON级别的累积转义操作。

你的字符串["foo\\"]

由于其双重\\

  • Now,
  1. 被JS转义为["foo\"] first,它被发送到JSON.parse,就像["foo\"]一样,转义了JS

因此,对于JSON解析器来说,它是一个未终止的字符串。

如果您需要在json级别解析["foo\\"],请将要转义的js字符串组装到这个级别。那就是["foo\\\\\"]。

测试。

代码语言:javascript
复制
s = '["foo\\\\\"]';
console.log(s);               //'["foo\\"]'
console.log(JSON.parse(s);)   // ["foo\"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33044200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档