我觉得我必须在这里错过一些简单的东西。我想使用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的返回直接传递给解析之间的区别是什么? Mu的最终目标是能够将JSON字符串解析为JSON对象,其中值可能包含双引号。
感谢您的帮助。
答案 0 :(得分:5)
使用引号作为分隔符将对象的字符串表示形式放入字符串时,必须转义反斜杠和引号:
JSON.parse("{\"hi\":\"\\\"bye\\\"\"}")
当你使用撇号作为字符串分隔符时,你不必转义引号(但如果有的话你必须转义撇号):
JSON.parse('{"hi":"\\"bye\\""}')