一般情况下,我们使用JSON.stringify() 是为了将一个对象转为字符串输出。
(1)第一个参数是我们要字符串化的对象或者数组,但是其实它还有第二个/第三个参数哦
let obj = {
name: '良人',
age: 18,
hobby: 'play'
}
console.log(JSON.stringify(obj))
// {"name":"良人","age":18,"hobby":"play"}
(2)第二个参数,为数组时,将key作为关键字打印我们需要的信息
let obj = {
name: '良人',
age: 18,
hobby: 'play'
}
console.log(JSON.stringify(obj, ['hobby']))
// {"hobby":"play"}
console.log(JSON.stringify(obj, ['aaaa']))
// "{}"
console.log(JSON.stringify(obj, ['aaaa', 'name']))
// {"name":"良人"}
第二个参数,为函数时
let obj = {name: 'lily', age: 18}
console.log(223, JSON.stringify(obj, (key, value) => {
if (key === 'name') {
return 111111
}
return value // 这里的return返回的是修改过后的整个值,一定要返回哦
}))
// "{"name":111111,"age":18}"
(3)第三个参数为字符串或数值时, 字符串会以该字符向前填充,数值则按照tab键个数填充
let obj = {
name: '良人',
age: 18,
hobby: 'play'
}
console.log(JSON.stringify(obj, null, '***'))
// "{
// ***"name": "良人",
// ***"age": 18,
// ***"hobby": "play"
// }"
console.log(JSON.stringify(obj, null, 8))
// {
// "name": "良人",
// "age": 18,
// "hobby": "play"
// }
(4)对象可以定义一个toJSON 方法,JSON.stringify时得到这个方法返回的值
const obj = {
name : '良人',
age : 18,
hobby: 'play',
toJSON() {
return {
myInfo: `${this.name} + ${this.age}`
}
}
}
console.log(JSON.stringify(obj))
// "{"myInfo":"良人 + 18"}"