-
JSON参数
-
JSON.stringify()
-
语法
JSON.stringify(value, [, replace[, space]])
-
参数说明
value: 对象或者数组
replace: 可选,
1. 函数,调用函数处理成员的键值。返回undefined则排除成员。根对象的键是一个空字符串:""
-
数组,转换数组中具有键值的成员,当value也为数组,忽略此值。
-
-
space: 可选,文本添加缩进、空格、换行符。<10,最大10个空格。可使用’ ‘
-
-
例子
var obj = { "name":"junjia", "sex":1, tel: 110, address: '植村'};
var darr = ["name","tel"]
JSON.stringify(obj, darr) // 过滤只拿到name的值 '{"name":"runoob"}'
JSON.stringify(obj, darr, 2) // '{
"name": "runoob"
}'
function fn(prop, value) {
// 1. this
// console.log(this)
// var json = this[""]
// console.log(json)
// 2. 遍历对象
console.log(prop)
console.log(value)
if(prop == 'address') return; // 过滤掉住址
return value; // 必须返回value值
}
JSON.stringify(obj, fn)
常用库
-
fast-json-stringify
-
slow-json-stringify
原理理解,性能比较
console.time()
var obj = { "name":"junjia", "sex":1, tel: 110, address: '植村'};
JSON.stringify(obj)
console.timeEnd() // default: 0.015869140625ms
// 已知数据结构,定制结构
优化原理
1. 需要先确定对象的结构信息;
2. 信息,为该种结构的对象创建“定制化”的stringify方法,其内部实际是通过字符串拼接生成结果的;
3. 用该“定制化”的方法来 stringify 对象即可。
function myStringify(o) {
return (
`
{"name":${o.name},"sex":${o.sex},"tel":${o.tel},"address":${o.address}}
`
)
}
console.time()
var obj = { "name":"junjia", "sex":1, tel: 110, address: '植村'};
myStringify(obj)
console.timeEnd() // default: 0.013671875ms