欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

两个JSON.stringify的参数

发布时间:2016-07-25 14:15  回复:0  查看:2643   最后回复:2016-07-25 14:15  

关于JSON.stringify函数,应该都知道其最初的含义,JSON.stringify(obj)把对象转化为JSON字符串,当然,在低版本浏览器中需要引入JSON2.js插件才能正常使用。但是,JSON.stringify仅仅就这一个用处么?显然不止。它还有第二个、第三个参数。了解这三个用处将对学习JSON  大有用处。

 

第二个参数

JSON.stringify的第二个参数可以是一个数组,也可以是一个function。

数组

对象或者说JSON字符串都可以看成是由多个key-value键值对组成,而第二个参数为数组的时候过滤掉所有key不在数组中的键值对。例如:

两个JSON.stringify的参数

两个JSON.stringify的参数

可以看到,键名不为a或者b的全部被过滤掉了。OK,例子看懂了,那这特性有什么用呢?

经常我们会有这种需求,对于下面数组,不显示其年龄(age)属性。


两个JSON.stringify的参数


一般或许会采用循环排出,或者数组的map等遍历从新生成,但是有JSON.stringify就简单多了。先转成JSON字符串同时过滤掉age,再还原成数组对象。


两个JSON.stringify的参数

两个JSON.stringify的参数

OK,简简单单一句话,搞定。

function

当然,第二个参数也可以是一个Function,其有两个参数,当前遍历的key和value,如果没有返回值则过滤掉当前key值①,否则当前遍历的key值对应的value值为返回值②。

如上屏蔽age一例,如果用function的方式则可以这样写:


两个JSON.stringify的参数

可以看到结果和上面一样,当然,这里只是JSON字符串,需要再次parse转化为对象形式。当然这里只用到function的第①点,还有另一个作用,改变其value值。如上同一个users对象,我们需要把sex的0和1分别改变成男和女。


两个JSON.stringify的参数

两个JSON.stringify的参数

第三个参数


第三个参数主要作为一个格式化参数。如下对象:


两个JSON.stringify的参数

假如我们用alert调试,会发现alert(test);为一个'[object Object]’根本看不到值。但是我们用alert(JSON.stringify(test));,可以看到其值但是完全没有格式,第三个参数就是这里的格式化补齐的符号。

如果是数字则表示缩进量:


两个JSON.stringify的参数

如果是字符则表示填充字符,当然同样会以第一层 1个,第二层2个。。。依次填充:


两个JSON.stringify的参数

可以看到,第二层的对象是填充的两个*,So,我们同样可以通过填充\t来进行代码缩进,当然,数字写上去速度快多了。

 

原文来自:代码山

您还未登录,请先登录

热门帖子

最新帖子