你可能不知道的JSON.stringify

时间:2024-04-03 19:50:18

JSON.stringify,是定义在ES5中的标准对象。(以下均简称stringify)

说到stringify,大家可能再熟悉不过了,不过,我们最常见的使用还是使用的是仅仅带一个参数的情况。

stringify至多可接收3个参数,value: 要序列化的对象, ?replacer: 过滤条件,?space: 缩进。

replacer可以是3种值,null,字符串数组,函数。

1、当是null的时候,讲不会对当前键-值进行处理;

2、当是数组的时候,数组提供需要保留的键:

你可能不知道的JSON.stringify

3、当是函数的时候,函数接收2个参数:key:当前序列化的key,value:当前序列化的value;

如图:

你可能不知道的JSON.stringify

当我们再使用过滤函数处理时候,如果不符合我们要特殊化处理的操作,一定要记得放行(图中 return value),否则格式化出来的数据就有问题。

第三个参数是是否使用缩进,当我们不适用缩进的时候,stringify序列化的结果是一行,不便于观察,若提供此参数,则可以按指定字符进行缩进也可以按照特殊符号进行缩进。

在序列化的过程中,还可以为对象定制toJSON(目的是为了更精细化的控制)方法,当执行序列化的时候,如果定义了这个方法,则调用这个方法里面返回的值,否则执行上述过程。

例如:

你可能不知道的JSON.stringify

以上内容均参考自《JavaScript高级程序设计》。