语法
JSON.stringify(value[, replacer [, space]])
参数说明
- value:必传,需要序列化的值。
- replacer:非必传,函数或者数组,改变 JSON.stringify 输出结果。
- space:非必传,数字或者字符串,改变输出 JSON 字符串的缩进。
返回值:JSON字符串
第一个参数value相信大家都已经使用过很多次了,这里我们主要探索第二个参数replacer和第三个参数space的使用。
第二个参数replacer:
当第二个参数 replacer 为函数时,函数有两个参数,第一个参数为健,第二个参数为值
我们看到,replacer 函数执行了四次,第一次执行健 key 是空字符串,值 value 是 obj 对象,第二次、第三次、第四次之后执行返回的健 key 是 obj 对象的健,值 value 是 obj 对象的值。
那我们怎样改变 JSON.stringify 输出结果呢?答案当然是改变 replacer 函数的返回值了。这里我么修改一下代码,当健 key 是 b 的时候,我们返回字符 'bbb'
可以看到,我们的输出结果中健 b 变成了 'bbb' 。
当第二个参数 replacer 为数组时,类似于筛选的功能,数组中包含的健才会被序列化。
数组中我们传了 a 和 c,输出结果中筛选出了 a 和 c 的结果。
第三个参数 space 为数字时
神奇的事情发生了,我们的输出结果变“漂亮”了,数字表示我们需要缩进的数量,但 space 最大只能为 10, 当大于 10 时,文本只会缩进 10 个数量。
当第三个参数 space 为字符串时
输出的结果中缩进变成了我们设置的 space 字符串。所以 space 也可以设置成 \t、\n等特殊字符串
当设置成 \t 时,结果缩进了 4 个空白。
总结
第二个参数可以修改、过滤 JSON.stringify 的输出结果,第三个参数可以修改缩进,一般用于美化输出结果。