JSON.parse解析JSON.stringify输出但不解析字符串本身

时间:2016-05-21 00:49:20

标签: javascript json parsing

我刚在Chrome控制台中看到了这个:

JSON.stringify(({wat:"\""}))
> "{"wat":"\""}"
JSON.parse(JSON.stringify(({wat:"\""})))
> Object {wat: """}
JSON.parse('{"wat":"\""}')
> VM34235:1 Uncaught SyntaxError: Unexpected string in JSON at position 9(…)

截图:

shenanigans

JSON.parse在传递JSON.stringify({wat:"\""})的输出时成功解析,但在我尝试评估JSON.parse('{"wat":"\""}')时抛出。

我打电话给恶作剧。

2 个答案:

答案 0 :(得分:5)

引号字符必须使用两个反斜杠进行转义,如下所示:

JSON.parse('{"wat":"\\""}')

如果仅使用一个反斜杠进行转义,JSON.parse()实际上会得到以下值来解析:

{"wat":"""}

当然是无效的JSON。

答案 1 :(得分:0)

尝试添加2个这样的反斜杠。 JS将\视为转义符并忽略它。所以:

{wat:"\\""}