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 }) )