我想了解更多关于JSON.parse()方法的核心功能,但我无法理解为什么这个字符串会返回错误:
JSON.parse('["foo\\"]'); // > "Unexpected end of input"
为什么这不会返回[“foo \”]?
答案 0 :(得分:0)
因为字符串未终止,因为第二个"
被\
转义,因为您要解析的数据是:
["foo\"]
您可以使用
自行确认var s = '["foo\\"]';
alert(s); // or
console.log(s);
答案 1 :(得分:0)
这是因为表达式中JS和JSON级别的\
累积转义操作。
您的字符串["foo\\"]
["foo\"]
因为它是\\
["foo\"]
,它逃脱了"
因此,它是JSON解析器的未终止字符串。
如果需要在json级别解析["foo\\"]
,请将要转义的js字符串汇总到此。这是["foo\\\\\"]
。
TEST。
s = '["foo\\\\\"]';
console.log(s); //'["foo\\"]'
console.log(JSON.parse(s);) // ["foo\"]