前端技术之:JSON.stringfy详细说明

JSON.stringify() 语法
JSON.stringify(value[, replacer[, space]])数组


value 被序列化为字符串的对象函数

replacer 根据类型不一样,其行为也不同。若是是一个函数类型,则至关因而一个filter,能够对序列化的键值对进行加工处理;若是是一个数组,则只有符合数组中名称的key才会被输出spa

space 若是为0或不填,则不进行格式化处理;若是为大于0的数值,则表示每级缩进空格数;若是是一个字符串,则表示每级缩进时替代空格进行填充的字符串内容。code


经过如下的data做为示例:对象

let data = {
    name: 'wang',
    age: 28,
    address: null,
    favorites: undefined,
    company: {
        name: 'world village',
        address: 'Beijing city'
    }
}

不加任何参数,直接输出:ci

console.log(JSON.stringify(data))

结果为:字符串

{"name":"wang","age":28,"address":null,"company":{"name":"world village","address":"Beijing city"}}

第二个参数为数组:string

console.log(JSON.stringify(data, ['name', 'age']))

结果为:it

{"name":"wang","age":28}

第二个参数是一个函数:console

console.log(
    JSON.stringify(data, (k, v) => {
        if ('age' == k) {
            return undefined
        }
        return v
    })
)

结果为:

{"name":"wang","address":null,"company":{"name":"world village","address":"Beijing city"}}

若是第三个参数为0或者null:

console.log(JSON.stringify(data, null, 0))

则结果为:

{"name":"wang","age":28,"address":null,"company":{"name":"world village","address":"Beijing city"}}

若是第三个参数为大于0的数值:

console.log(JSON.stringify(data, null, 2))

则结果为:

{
  "name": "wang",
  "age": 28,
  "address": null,
  "company": {
    "name": "world village",
    "address": "Beijing city"
  }
}

若是第三个参数为字符串:

console.log(JSON.stringify(data, null, '**'))

则结果为:

{
**"name": "wang",
**"age": 28,
**"address": null,
**"company": {
****"name": "world village",
****"address": "Beijing city"
**}
}

若是过滤值为null或者undefined的键值对?

let data = {
    name: 'wang',
    age: 28,
    address: null,
    favorites: undefined,
    men: true,
    women: false,
    company: {
        name: 'world village',
        address: 'Beijing city'
    }
}
console.log(
    JSON.stringify(data, (k, v) => {
        if (null != v && undefined != v) return v
    })
)
相关文章
相关标签/搜索