JSON.Stringify每次进行字符串化时都会转义双引号
JSON.stringify escapes double quotes every time when stringified
我正在存储从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'"]}"'
相关文章:
- 在JavaScript中输出转义字符
- 转义符不能与innerHTML一起使用
- Rails 3.2 js.erb文件转义js
- 转义在jsp's脚本
- 为什么JSON.stringify没有序列化原型值
- 尝试JSON.stringify Ember模型时Id丢失
- 使用Jinja2的JavaScript转义字符串
- 如何配置browserfy与Karma使用转换Stringify为Mustache模板
- 将c#视图模型转换为javascript模型时转义HTML标记
- MVC C#从jQuery和JSON.stringify创建的cookie中读取值
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- Rails:如何在浏览器中显示动态html内容,而不会对其进行转义,也不会引起XSS攻击
- 删除单引号字符转义
- 如何使用javascript/jquery更改转义键的功能
- 包含转义符号的正则表达式
- 在RegEx(JavaScript)中正确转义变量
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 强制 JSON.stringify 转义正斜杠(即“/”)
- JSON.stringify不需要转义
- JSON.Stringify每次进行字符串化时都会转义双引号