对JSON.parse()中存在转义字符的解决以及js中替换函数
replace()的认识
在⼯作中,遇到对页⾯数据进⾏转存json格式数据后存储在数据库中.然⽽在显⽰数据时遇到⽆法显⽰json中的数据,产⽣的bug 问题抛出:
1.⾸先认识下,在JSON.parse()将后台传过来的字符串数据转存对象,遇到字符串中带有转义字符.然⽽JSON.parse()对转义字的符执⾏过程其实经历了两次转义,具体如下:
⼀次是字符串本⾝的转义:
js 正则替换'{"test": "这是⼀个对象,⾥⾯有 \\"test\\" 字段"}'
被转换成
'{"test": "这是⼀个对象,⾥⾯有 \"test\" 字段"}'
(可以直接在浏览器的命令⾏输⼊这段字符串)
⼀次是字符串转对象时的转义:
因为已经被转换成了
'{"test": "这是⼀个对象,⾥⾯有 \"test\" 字段"}'
"\"会被认为是 """的转义符,就会正确的转成对象。
⽽当只有⼀个"\"的时候,到字符串转对象的时候, test 字段值⾥就有两对双引号,就会报错。
⼜去查了下 ES5 规范中的 parse ⽅法:
第⼀步应该是对应字符串本⾝的转义
第⼆步则对应字符串转对象时的转义
也就是说:如果字符串中存在"\",那么我们需要写成"\\\\";
因此,我们需要将字符串中"\"替换成"\\\\",于是,就需要使⽤js中的replaceAll()函数,⽽在js中不存在replaceAll()函数,那么需要我们⾃定义,或者使⽤正则进⾏,具体如下:
如果你是⼀个偷懒的话,可以选择第⼀种,⽅便简单.哈哈哈,,,个⼈推荐使⽤第三种.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论