JSON.parse无法在值中使用双引号

r2_*_*118 2 javascript json

我觉得我必须在这里错过一些简单的事情。我想使用JSON.parse将字符串转换为JSON对象。我一直在玩这个简单的例子。

JSON.stringify({hi:'"bye"'})
//returns "{"hi":"\"bye\""}"

JSON.parse(JSON.stringify({hi:'"bye"'}))
//returns Object {hi: ""bye""}

JSON.parse("{"hi":"\"bye\""}")
//returns SyntaxError: Unexpected identifier

JSON.parse('{"hi":"\"bye\""}')
//Unexpected token b
Run Code Online (Sandbox Code Playgroud)

我的问题是手动传递stringify返回与直接传递stringify返回以进行解析之间有什么区别?Mu的最终目标是能够将JSON字符串解析为JSON对象,其中的值可能包含双引号。

谢谢您的帮助。

Guf*_*ffa 5

当使用引号作为定界符将对象的字符串表示形式放置在字符串中时,必须转义反斜杠和引号:

JSON.parse("{\"hi\":\"\\\"bye\\\"\"}")
Run Code Online (Sandbox Code Playgroud)

当您使用撇号作为字符串定界符时,不必转义引号(但是,如果有引号,则必须转义撇号):

JSON.parse('{"hi":"\\"bye\\""}')
Run Code Online (Sandbox Code Playgroud)