Javascript 为什么这个字符串不可拆分?
当我看上面的代码时,所有的语法似乎都是正确的。我假设它是一个JSON字符串,可以转换回包含字符串“foo”和字符串“bar\”的数组,因为第一个反斜杠转义了第二个反斜杠Javascript 为什么这个字符串不可拆分?,javascript,json,parsing,escaping,Javascript,Json,Parsing,Escaping,当我看上面的代码时,所有的语法似乎都是正确的。我假设它是一个JSON字符串,可以转换回包含字符串“foo”和字符串“bar\”的数组,因为第一个反斜杠转义了第二个反斜杠 那么,为什么会出现意外的输入结束?我想这和反斜杠有关,但我想不出来。你需要加倍逃逸。使用模板文本和String.raw可以执行以下操作: JSON.parse('["foo", "bar\\"]'); //Uncaught SyntaxError: Unexpected end of JSON input 看起来您的代码应该是
那么,为什么会出现意外的输入结束?我想这和反斜杠有关,但我想不出来。你需要加倍逃逸。使用模板文本和
String.raw
可以执行以下操作:
JSON.parse('["foo", "bar\\"]'); //Uncaught SyntaxError: Unexpected end of JSON input
看起来您的代码应该是:
JSON.parse(String.raw`["foo", "bar\\"]`);
您的Json对象确实是[“foo”,“bar\\\”]
,但是如果您想在JavaScript代码中表示它,您需要再次转义\
字符,因此有四个\
字符
关于你为什么要在条后双重转义引号?您的字符串中是否明确需要一个\then?我正在做一个练习,这是一个测试用例。
\\“
实际上是\”
,这意味着您正在转义字符串而不是关闭它。键入'[“foo”,“bar\\\”]“
进入您的浏览器控制台,查看该文本实际创建的字符串-您将看到它不是有效的JSON。这似乎是一个字符串文本问题。例如,这将传递~str=JSON.stringify('[“foo”,“bar\\\”]);JSON.parse(str);
即使str
似乎包含'[“foo”,“bar\\”]“
string literal中需要四个反斜杠,而不是八个。OP在解析后寻找的结果是第二项为“bar\”的数组。谢谢你nnnn,我认为Web编辑器需要另一个级别的转义。我更正了答案。这为什么会被否决?显示的代码可以工作(虽然说“需要”双重转义然后显示不这样做的代码有点让人困惑)。
JSON.parse('["foo", "bar\\\\"]');