JSON在JavaScript中的进阶用法
大家在工作中可能用JavaScript处理JSON格式的数据的时候肯定离不开JSON.parse()和JSON.stringify()
这两个方法,说一下这两个方法的强大之处
总结自《JavaScript 高级程序设计》
- 序列化为JSON字符串
var book = {
title:"JSON JavaScript",
authors:[
"ldl"
],
edition:2,
year:2017
};
var jsonText = JSON.stringify(book);
以上就是我们平时最简单的序列化的用法
- 解析为原生JavaScript值
var jsText = JSON.parse(jsonText);
以上为最简单的解析用法
进阶用法
序列化选项
JSON.stringify()方法除了要序列化的JavaScript对象之外,还可以接受另外两个参数:一个过滤器(Function||Array),也叫过滤函数(replacer);一个保留缩进选项,show you the code:
var book = {
title:"JSON JavaScript",
authors:[
"ldl"
],
edition:2,
year:2017
};
var jsonText = JSON.stringify(book,["title,edition"]);//数组:返回数组中包含的属性
var jsonText = JSON.stringify(book,function(key, value){//函数:过滤作用
switch(key){
case "authors":
return value.join(",");
case "year":
return 9527;
case "edition":
return undefined;
default:
return value;
}
},4);//缩进值最大为10,大于10时自动变为10,结果字符串会自动包含换行符。
- 解析选项
JSON.parse()方法也可以接受另一个参数,这个参数是一个函数,也叫做还原函数(reviver)与过滤器函数签名相同。
var book = {
title:"JSON JavaScript",
authors:[
"ldl"
],
edition:2,
year:2017,
releaseDate: new Date(2017, 11, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText,function(key, value){
if(key =="releaseDate"){
return new Date(value);
} else {
return value;
}
});
alert(bookCopy.releaseDate.getFullYear());