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

时间:2015-10-09 17:39:56

标签: javascript json parsing

我想了解更多关于JSON.parse()方法的核心功能,但我无法理解为什么这个字符串会返回错误:

JSON.parse('["foo\\"]');  // > "Unexpected end of input"

为什么这不会返回[“foo \”]?

2 个答案:

答案 0 :(得分:0)

因为字符串未终止,因为第二个"\转义,因为您要解析的数据是:

["foo\"]

您可以使用

自行确认
var s = '["foo\\"]';
alert(s);  // or
console.log(s);

答案 1 :(得分:0)

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

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

  1. 首先将JS改为["foo\"]因为它是\\
  2. 现在它被发送到JSON.parse,如["foo\"],它逃脱了"
  3. 因此,它是JSON解析器的未终止字符串。

    如果需要在json级别解析["foo\\"],请将要转义的js字符串汇总到此。这是["foo\\\\\"]

    TEST。

    s = '["foo\\\\\"]';
    console.log(s);               //'["foo\\"]'
    console.log(JSON.parse(s);)   // ["foo\"]