问题说明:
一个普通的对象,如果含有引号,使用JSON.parse将其转换为字符串,然后保存在数据库中,可以顺利保存;但是下次取出来解析的时候,使用JSON.stringify解析会报错。
问题分析:
在保存的时候,确实可以成功保存,这是因为JSON.stringify会将其中的双引号进行转义处理,所以保存到数据库中看到的是正确的!但是在进行字符串解析的时候,因为字符串中没有转义字符,所以就无法解析了。而且,需要知道的是,在进行解析的时候,是会经过两层的转义处理的,一层是字符串本身的转义,另一次是将字符串转换为对象的时候的转义。
问题解决:
通过前边的分析,我们知道了出错的原因是转义字符的问题,所以解决的方案也就从转义字符下手。方法:在字符串保存之前,即在使用JSON.stringify之前,我们将所有的引号加上转义就行,将对象的内容使用replace(/\"/g, '\\\"');
例子:let obj={a:'"asd"'}
变换后:obj.a=obj.a.replace(/\"/g, '\\\"');
然后使用JSON.parse处理就可以了。
版权声明:本文为buzaishihaizi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。