为什么这个字符串不可解析?

时间:2016-09-27 03:15:00

标签: javascript json parsing escaping

JSON.parse('["foo", "bar\\"]'); //Uncaught SyntaxError: Unexpected end of JSON input

当我查看上面的代码时,一切看起来都是正确的。它是一个JSON字符串,我认为它可以转换回包含字符串" foo"和字符串" bar \"的数组。因为第一个反斜杠逃脱了第二个反斜杠。

那么为什么会出现意外的输入结束?我假设它与反斜杠有关,但我无法弄明白。

2 个答案:

答案 0 :(得分:4)

您的代码似乎应该是:

JSON.parse('["foo", "bar\\\\"]');

您的Json对象确实是["foo", "bar\\"]但如果您希望它在JavaScript代码中表示,则需要再次转义\个字符,因此有四个\个字符。

问候

答案 1 :(得分:0)

你需要双重逃脱。使用模板文字和String.raw,您可以:

JSON.parse(String.raw`["foo", "bar\\"]`);