谈谈JSON.stringify第二个参数和第三个参数的用法【视频】

2666次浏览

前言

本文主要介绍一个小的知识点,可能不少同学忽略了,或者不清楚,普及一下。就是我们最常用的JSON.stringify,我们用这个参数,通常是在序列化和反序列化的时候使用,有时候也在简单的,非函数的深copy的时候使用。但是不知道其有第二个和第三个参数。

文档属性普及

JSON.stringify(value[, replacer[, space]])

参数说明:

value:
必需, 要转换的 JavaScript 值(通常为对象或数组)。

replacer:
可选。用于转换结果的函数或数组。

如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。

space:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

第二个参数用法

第二个参数用法很简单,只不过很多朋友不知道这个知识点,这个用法在提交后端数据的时候,非常实用。

例如:后端需要前端为空或者undefined的时候,字段也不要传入。那么我们就会用到了第二个参数的函数了。用法如下:

//前端传入后端参数数据:
var params = {"name":"haorooms", "site":"http://www.haorooms.com",text:'',data:undefined,age:null,child:''}

JSON.stringify(params, (key, value) =>{
    if(value){
       return value
     } else {
       return undefined
   }
})

// 返回的是:"{"name":"haorooms","site":"http://www.haorooms.com"}",然后再JSON.parse一下就可以了

上面的用法是用到了函数,还可以是数组,数组就比较好理解了,代表的是返回固定哪几个?

例如如下:

 var params = {"name":"haorooms", "site":"http://www.haorooms.com",text:'',data:undefined,age:null,child:''}

    JSON.stringify(params, ["name"])

// 输出:"{"name":"haorooms"}"

第三个参数用法

第三个参数通常是用于格式化,例如我么打印一段格式化的字符串

 var params = {"name":"haorooms", "site":"http://www.haorooms.com",text:'',data:undefined,age:null,child:''}

    JSON.stringify(params, null,'\t')

"{
    "name": "haorooms",
    "site": "http://www.haorooms.com",
    "text": "",
    "age": null,
    "child": ""
}"

这样就可以格式化输出了。

怎么样,小技巧get了吗?

B站视频如下

希望点赞和投币啊!

相关文章: