序列化
JSON.stringify(josn,callback,n)
解析
JSON.parse(josn,callback)
- json为一个JOSN数据
- callback是处理数据的过滤器(同上)(还原函数)
JOSN数据函数
toJSON:function(){
let obj = this;
return obj;
}
- 这个函数被放在JSON数据里面,用来预处理数据
- 注意不要用箭头函数,全局作用域会让你的this醉酒
序列化流程
- 先执行toJSON()
- 执行stringify()中的替换函数(第二个实参如果有的话)
- 执行stringify()中的缩进(第三个实参如果有的话)
代码案例
const json = {
"name":"gjk",
"age":20,
"girlfriend":undefined,
"date":new date(2023,8,21),
toJSON:function(){
let obj = this;
obj.girlfriend = "lzy";
return obj;
}
};
const jsonText = JOSN.stringify(json,(key,value)=>{
if(key==="age"){
return ++value;
}
return value;
},4);
console.log(jsonText);
const data = JSON.parse(josnText,(key,value)=>{
if(key==="date"){
return new Date(value);
}
return value;
}):
console.log(data.date.getFullYear());
- 键值为undefined的话,序列化的时候会被忽略,(这个案例中,用toJSON函数重新赋值了)
- 利用还原函数,实现了Date对象的序列化和解析的过程
- stringify()的第三个参数,实现了每层级四个空格缩进