JSON.Stringify每次进行字符串化时都会转义双引号

JSON.stringify escapes double quotes every time when stringified

本文关键字:转义 Stringify 字符串 JSON      更新时间:2023-09-26

我正在存储从web服务检索到javascript中的对象的JSON对象。在很多地方,它会被字符串化(这个对象经过一些插件,它会被字符串化,存储和检索它)它会添加多个斜杠。我怎样才能避免呢?

http://jsfiddle.net/MJDYv/2/

var obj = {"a":"b", "c":["1", "2", "3"]};
var s = "";
console.log(obj);
s = JSON.stringify(obj);
alert(s); // Proper String
s = JSON.stringify(s);
alert(s); // Extra slash added, Quotes are escaped
s = JSON.stringify(s);
alert(s); // Again quotes escaped or slash escaped but one more slash gets added
var obj2 = JSON.parse(s);
console.log(obj2); // Still a String with one less slash, not a JSON object !

因此,当解析这个多重字符串时,我再次以字符串结束。当试图访问一个对象时,它会崩溃。

我试图通过使用replace(/''/g,"")来删除斜杠,但我以此结束:""{"a":"b","c":["1","2","3"]}""

这是预期的行为

JSON.stringify不像一个"身份";在已经转换为JSON的数据上调用时。按照设计,它转义引号、反斜杠等。

您需要调用JSON.parse()的次数与调用JSON.stringify()的次数完全相同,以获得您放入的相同对象

Try

JSON.stringify(s).replace(/''"/g, '"')

您可以通过在想要转换为JSON的数据上只调用一次JSON.stringify()来避免这种情况。

试试这个:

s = {"a":"b", "c":["1", "2", "3"]}
JSON.stringify(JSON.stringify(s))

给出的输出为

'"{'"a'":'"b'",'"c'":['"1'",'"2'",'"3'"]}"'