JSON.stringify()参数

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

JSON.stringify()的第一个参数是可序列化的js对象

replacer

第二个参数是一个replacer,replacer可以是一个函数或者一个字符串数组

当replacer是数组时,相当于一个白名单,只有在这个数组中的属性最终会被序列化

JSON.stringify({
    name: 'acky',
    age: 18,
    gender: 'male'
}, ['name', 'age'])
// result
// "{"name":"acky","age":18}"

当replacer是函数时,接受两个参数,key和value,注意:

Initially it gets called with an empty key representing the object being stringified, and it then gets called for each property on the object or array being stringified

一开始会先接收到key为空,value为要序列化的对象,必须返回这个对象,否则JSON.stringify()没有结果,因为会递归对这个对象上的key:value调用replacer函数

JSON.stringify()参数_第1张图片
image.png
var rep = (key, value) => {
    if (key === 'name') {
        return value.toUpperCase()
    }
    if (key === 'age') {
        return ++value
    }
    if (key === 'gender') {
        return 'female'
    }
    return value
}
JSON.stringify({
    name: 'acky',
    age: 18,
    gender: 'male'
}, rep)
// result
// "{"name":"ACKY","age":19,"gender":"female"}"

space

第三个参数表示的是每个字符前的缩进,可以是字符串,或者数字,数字表示的是缩进的空格,最大为10

当使用字符串作为缩进的时候

JSON.stringify({ name: 'acky', age: 19, gender: 'male' }, null, 'hello world')
// result
"{
hello worl"name": "acky",
hello worl"age": 19,
hello worl"gender": "male"
}"

当使用数字表示缩进的空格时

JSON.stringify({ name: 'acky', age: 19, gender: 'male' }, null, 10)
// result
"{
          "name": "acky",
          "age": 19,
          "gender": "male"
}"

你可能感兴趣的:(JSON.stringify()参数)