JSON.parse() 和转义字符在 JavaScript 中如何工作?

How do JSON.parse() and escape characters work in JavaScript?

假设我有一个对象变量:

var obj = {
    key: '\"Hello World\"'
}

然后我尝试使用 Chrome devtools 控制台中的 JSON.stringify 将其解析为字符串:

JSON.stringify(obj) // "{"key":"\"Hello World\""}"

我得到了结果"{"key":"\"Hello World\""}"。然后我把它给一个字符串

var str = '{"key":"\"Hello World\""}'

至少我尝试将它转换回 obj:

JSON.parse(str);

但是浏览器告诉我错误Uncaught SyntaxError

让我困惑的是为什么这是错误的?我从原始对象获取字符串,我只想将其返回。

我该如何解决这个问题?如果我想完成将 obj 转换为字符串并 return 返回的工作,我该怎么做?

您试图通过将 JSON 包装在 ' 个字符中将其转换为字符串文字,但 \ 个字符在 JavaScript 个字符串文字中具有特殊含义\" 在到达 JSON 解析器之前被 JavaScript 解析器转换为 "

您也需要转义 \ 个字符。

var str = '{"key":"\"Hello World\""}'

也就是说,一般来说,最好不要尝试将 JSON 嵌入 JavaScript 字符串文字中,而只是首先用 JSON.parse 解析它们。 JSON 语法是 JavaScript 的子集,因此您可以直接使用它。

var result = {"key":"\"Hello World\""};

尝试:

var str = '{"key":"\"Hello World\""}';