我将从Web服务中检索到的JSON对象存储到javascript中的对象.在许多地方,这会得到字符串化(这个obj会经过一些插件,它会对它进行格式化并存储并进行后续处理)并添加多个斜杠.我怎么能避免呢?
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 !
Run Code Online (Sandbox Code Playgroud)
因此,在解析这个多字符串时,我最终会再次使用字符串.当试图像对象一样访问时它会崩溃.
我试图通过使用删除斜杠replace(/\\/g,"")但我以此结束:""{"a":"b","c":["1","2","3"]}""
Aln*_*tak 31
你期望发生什么?
JSON.stringify在调用已转换为JSON的数据时,它不会像"身份"函数那样运行.在设计上,它会逃跑引号,反斜杠,等等.
您需要调用JSON.parse()与您调用的完全相同的次数JSON.stringify()来返回您放入的相同对象.
Aru*_*run 17
尝试这个:
s = {"a":"b", "c":["1", "2", "3"]}
JSON.stringify(JSON.stringify(s))
Run Code Online (Sandbox Code Playgroud)
给出输出为
'"{\"a\":\"b\",\"c\":[\"1\",\"2\",\"3\"]}"'
Run Code Online (Sandbox Code Playgroud)
Tom*_*rae 10
只需JSON.stringify()在要转换为JSON的数据上调用一次就可以避免这种情况.
| 归档时间: |
|
| 查看次数: |
73360 次 |
| 最近记录: |