每次字符串化时,JSON.stringify都会转义双引号

时间:2013-05-12 13:27:46

标签: javascript json

我将从Web服务中检索到的JSON对象存储到javascript中的对象。在许多地方,这会得到字符串化(这个obj会经过一些插件,它会对它进行格式化并存储并进行后续处理)并添加多个斜杠。我怎么能避免它?

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"]}""

3 个答案:

答案 0 :(得分:27)

您期望发生什么?

当调用已转换为JSON的数据时,

JSON.stringify不会像“身份”函数那样行事。按照设计,它转义引号,反斜杠等。

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

答案 1 :(得分:9)

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

答案 2 :(得分:4)

尝试

JSON.stringify(s).replace(/\\"/g, '"')
相关问题