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

JSON.parse()和转义字符在JavaScript中如何工作?,javascript,json,escaping,Javascript,Json,Escaping,假设我有一个对象变量: var obj = { key: '\"Hello World\"' } 然后我尝试在Chrome devtools控制台中使用JSON.stringify将其解析为字符串: JSON.stringify(obj) // "{"key":"\"Hello World\""}" 我得到结果“{”key:“\“Hello World\”}”。然后我把它交给一根绳子 var str = '{"key":"\"Hello World\""}' 至少我尝试将其转换回o

假设我有一个对象变量:

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);
但是浏览器告诉我错误的
uncaughtsyntaxerror

让我困惑的是为什么这是错误的?我从一个原点对象得到字符串,我只想把它转回来


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

您试图将JSON转换成字符串文字,方法是将其包装成
字符,但是
\
字符在JavaScript字符串文字中具有特殊意义,
\“
转换成
在到达JSON解析器之前由JavaScript解析器执行

您还需要转义
\
字符

var str = '{"key":"\\"Hello World\\""}'
也就是说,一般来说,最好不要尝试将JSON嵌入JavaScript字符串文本中,而只是首先使用JSON.parse对其进行解析。JSON语法是JavaScript的一个子集,因此您可以直接使用它

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


在这种情况下,如果不使用
\
转义字符,您可能会发现您正在做的事情更容易。如果您在
之间切换,则无需转义。例如,您可以执行
键:“'Hello World'”
。字符串值与字符串文字不同。
JSON.parse(JSON.stringify(obj))
可以正常工作。
var str = '{"key":"\\"Hello World\\""}';