-
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