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\\""}';