JSON.stringify()方法

JSON.stringify()方法用于将一个值转为JSON字符串,该字符串符合JSON格式,并且可以被JSON.parse()方法还原

一、使用JSON.stringify()方法返回的效果,以及需要注意的地方

例如:

 

 

 !!!!!!原始类型的字符串,转换之后会带双引号

 

注意:

 看到这个表达式,第一反应应该是true,结果是false

 分开打印看下效果就一目了然,这是因为内层的双引号可以让引擎知道,这是个字符串,
如果内层没有双引号,在还原时,Javascript引擎就无法知道是原始值是字符串还是布尔值

 上面代码中,字符串foo,被转成了"\"foo\""

 

二、注意

 数组成员是undefined、函数或者XML对象,都会被转成null

 上面代码中,对象obj的a属性是undefined,b是一个函数,转变之后都会被过滤掉

 如果是正则对象,会被转成空对象(文章最后有解决方法)

 JSON.stringify()方法会忽略对象的不可遍历属性

所以,当你使用JSON.stringify()方法时遇到一些问题,综合上面的情况,也许可以更快解决

 

三、JSON.stringify()方法第二个参数

1.可以接受一个数组作为第二个参数,指定参数对象的那些属性需要转成字符串(数组无效)

 2.第二个参数还可以是一个函数,(函数不能是undefined,否则会被忽略)

 四、第三个参数

JSON.stringify()还可以接受第三个参数,用于增加返回的 JSON 字符串的可读性。

默认返回的是单行字符串,对于大型的 JSON 对象,可读性非常差。第三个参数使得每个属性单独占据一行,并且将每个属性前面添加指定的前缀(不超过10个字符)。

 如果第三个参数是数字,那就是每个属性前面添加的空格

 五、参数的toJSON()方法

如果参数对象有自定义的toJSON()方法,那么JSON.stringify()会使用这个方法的返回值作为参数,而忽略原对象的其他属性。

 Date对象就有一个自己的toJSON()方法

 toJSON()方法的一个应用是,将正则对象自动转为字符串。因为JSON.stringify()默认不能转换正则对象,但是设置了toJSON()方法以后,就可以转换正则对象了。

posted @ 2021-11-30 14:13  danmo_xx  阅读(3316)  评论(0编辑  收藏  举报