JavaScript高级程序设计61.pdf
JSON对象
早期的JSON解析器就是使用JavaScript的eval()函数,ECMAScript5对解析JSON的行为做出了规定,定义了全局对象JSON。
JSON对象有2个方法:stringify()和parse(),分别用于把JavaScript对象序列化为JSON字符串(值为undefined的任何属性会被略过)和执行相反的操作
JSON.stringify()除了要序列化的JavaScript对象外,还可以接受2个参数,一个是过滤器,可以是一个数组或者函数,另一个是一个选项,表示是否在JSON字符串中保留缩进
var book={
title:xxx,
authors:xxx,
year:xxx
};
var jsonText=JSON.stringify(book,["authors","year"]); //返回只包含"authors","year"的JSON数据
var jsonText=JSON.stringify(book,function(key,value){
switch(key){
case "authors":
return value.join(",");
...
default:
return value;
}
});
第3个参数,这个参数也可以是一个字符串(会被当作缩进字符)
var jsonText=JSON.stringify(book,null,4); //每级自动换行并缩进4个空格(大于10的自动转化为10)
还有一个toJSON()方法,定义在对象上,返回其自身的JSON数据格式
var book={
title:xxx,
authors:xxx,
year:xxx
toJSON:function(){
return this.title;
}
};
解析选项
JSON.parse()方法也可以接受另一个参数,该参数是一个函数,为了区别于JSON.stringify()里的过滤函数,这里称为还原函数(同样接收一个键一个值两个参数,返回一个值)