Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse不使用值中的双引号_Javascript_Json - Fatal编程技术网

Javascript JSON.parse不使用值中的双引号

Javascript JSON.parse不使用值中的双引号,javascript,json,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: Unexpec

我觉得我必须错过一些简单的东西。我想使用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
我的问题是,手动传递stringify返回与直接将stringify返回传递给parse有什么区别?Mu的最终目标是能够将JSON字符串解析为JSON对象,其中的值可能包含双引号


谢谢您的帮助。

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

JSON.parse("{\"hi\":\"\\\"bye\\\"\"}")
使用撇号作为字符串分隔符时,不必转义引号(但如果有撇号,则必须转义):


在第三个示例中,没有对第一组双引号进行转义。也就是说,
JSON.parse(“{”hi:“\”bye\”}”)
应该是
JSON.parse(“{”hi\“:\”bye\”}”)
JSON必须符合这个超级简单的规范:区别在于您的“手动”版本不是有效的字符串文本。再看一遍,注意到引号有什么奇怪的地方吗<代码>“{”你好“\”再见“}”这就是问题所在,谢谢。我知道这是我的愚蠢行为。
JSON.parse('{"hi":"\\"bye\\""}')