【发布时间】:2016-09-18 08:59:58
【问题描述】:
我刚刚在 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(…)
截图:
JSON.parse 在传递JSON.stringify({wat:"\""}) 的输出时成功解析,但在我尝试评估JSON.parse('{"wat":"\""}') 时抛出。
我在说恶作剧。
【问题讨论】:
-
查看
'{"wat":"\""}'的字符串值。那应该就很清楚了。 -
'{"wat":"\""}' === '{"wat":"""}'; // true,你需要转义你的反斜杠 -
如果您查看控制台输出 (
"{"wat":"\""}"),您可以看到该值不是有效的字符串文字,因为它不显示转义序列。否则它必须看起来像"{\"wat\":\"\\\"\"}"。因此,您不能简单地将输出复制并粘贴到字符串文字中。控制台向您显示的是字符串 value。如果您在控制台中输入'foo\nbar',这可能会变得更加明显。 -
是的,我应该知道的。我正在调试一些将字符串化对象放入模板字符串中的代码,该字符串稍后会被评估,并尝试解析相同的内容,让我很困惑以至于忘记了正确的转义......
标签: javascript json parsing