我正在尝试更多地了解JSON.parse()方法的核心功能,但是我不明白为什么这个字符串返回一个错误:
JSON.parse('["foo\\"]'); // > "Unexpected end of input"为什么不返回"foo\“
发布于 2015-10-10 01:41:31
因为字符串没有终止,因为\对第二个"进行了转义,因为您要解析的数据是:
["foo\"]你可以自己确认这一点:
var s = '["foo\\"]';
alert(s); // or
console.log(s);发布于 2015-10-10 02:13:20
这是因为JS中的\和表达式中的JSON级别的累积转义操作。
你的字符串["foo\\"]
由于其双重\\
["foo\"] first,它被发送到JSON.parse,就像["foo\"]一样,转义了JS因此,对于JSON解析器来说,它是一个未终止的字符串。
如果您需要在json级别解析["foo\\"],请将要转义的js字符串组装到这个级别。那就是["foo\\\\\"]。
测试。
s = '["foo\\\\\"]';
console.log(s); //'["foo\\"]'
console.log(JSON.parse(s);) // ["foo\"]https://stackoverflow.com/questions/33044200
复制相似问题