关于JSON.stringify后面接的三个参数
JSON.stringify()方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,,平时我们一般用到JSON.stringify()方法,只会用第一个参数,很少会接触第二个第三个参数。今天遇到了,就写下来方便以后自己学习。
第一个参数
如果只传一个参数,那么就是正常的将一值(对象或者数组)转换成JSON字符串。
var shy= [1, 2]
var my = JSON.stringify(shy)
console.log(my ) // [1, 2]
console.log(typeof my ) // string
var shy= {
a: 1,
b: 2
}
var my = JSON.stringify(shy)
console.log(my ) // {a:1,b:2}
console.log(typeof my ) // string
第二个参数
第二个参数作用就是过滤,可以为一个过滤函数,也可以是一个数组。
1.函数
var data = {
name: 'sunhy',
info: {
age: 24,
sex: 'male'
}
}
var shy = JSON.stringify(data, function (key, val) {
console.log('key is %s', key)
console.log('val is %s', typeof (val))
return val
})
console.log(shy)
// key is
// val is object
// key is name
// val is string
// key is info
// val is object
// key is age
// val is number
// key is sex
// val is string
// {"name":"sunhy","info":{"age":24,"sex":"male"}}
2.数组。
var data = {
name: 'sunhy',
info: {
age: 24,
sex: 'male'
}
}
var shy = JSON.stringify(data, ['info', 'sex'])
console.log(shy)
// {"info":{"sex":"male"}}
第三个参数
用来控制结果字符串里面的间距。
可以是一个数字,可以是一个字符串
如果是一个数字, 则在字符串化时每一级别会比上一级别缩进多这个数字值的空格(最多10个空格);如果是一个字符串,则每一级别会比上一级别多缩进用该字符串(或该字符串的前十个字符)。
var data = {
name: 'sunhy',
info: {
age: 24,
sex: 'male'
}
}
var shy = JSON.stringify(data, null, 4)
console.log(shy)
// {
// "name": "sunhy",
// "info": {
// "age": 24,
// "sex": "male"
// }
// }
如果不加第三个参数,输出会只占一行
参数为字符串则是将占位符改为字符串,这里就不介绍了。