当我在JSON字符串中通过\"
转义双引号时,解析器失败。但是,当我使用JSON.stringify
时,它能够以某种方式正确地转义字符串。
我怀疑我没有正确地逃避双引号。查看代码以获取更多详细信息。
var data = {
"singleQuoteHtml": "<span class='qwer'>content</span>",
"doubleQuoteHtml": "<span class=\"qwer\">content</span>",
"singleQuote": "'hi'",
"doubleQuote": "\"hi\""
};
var dataString = '{"singleQuoteHtml": "<span class=\'qwer\'>content</span>",'
+ '"doubleQuoteHtml": "<span class=\"qwer\">content</span>",'
+ '"singleQuote": "\'hi\'",'
+ '"doubleQuote": "\"hi\"'
+ '}';
function Parse()
{
//Stringify is capable of creating single quotes and double quotes
console.log(JSON.parse(JSON.stringify(data)));
//When I escape double quotes myself the parser fails
//Uncomment to see failure
//console.log(JSON.parse(dataString));
}
<button onclick="Parse();">Parse JSON </button>
答案 0 :(得分:4)
字符串文字'... "\"hi\""...'
的计算结果为""hi""
,没有反斜杠。
反斜杠被字符串文字吞噬为转义序列。
你需要将反斜杠转义为\\
,以在字符串中放入实际的反斜杠。