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()
方法以后,就可以转换正则对象了。
本文来自博客园,作者:danmo_xx,转载请注明原文链接:https://www.cnblogs.com/xx321/p/15624051.html