序列化
stringify()
用于把js對(duì)象序列化為JSON字符串
var person={
name:"xiaoming",
age:12
}
var json=JSON.stringify(person); //{"name":"xiaoming","age":12}
stringify() 除了可以接受對(duì)象外,還可以接受2個(gè)參數(shù)齐唆,第一個(gè)參數(shù)是過(guò)濾器,可以是對(duì)象屬性的數(shù)組集合,也可以是函數(shù)锣披;第二個(gè)參數(shù)是一個(gè)選項(xiàng),表示是否在JSON字符串中保留縮進(jìn)贿条;
數(shù)組過(guò)濾器
json=JSON.stringify(person,['name']); //{"name":"xiaoming"}
函數(shù)過(guò)濾器
json=JSON.stringify(person,function(key,value){
switch(key){
case "name":
return value+",wang";
case "age":
return undefined;
default:
return value;
}
});
//{"name":"xiaoming,wang"}
注意雹仿,如果函數(shù)返回undefined,則該屬性就會(huì)被忽略整以;
字符串縮進(jìn)
json=JSON.stringify(person,null,4);
{
"name": "xiaoming",
"age": 12
}
toJSON()
向?qū)ο筇砑觮oJSON()方法:
var person={
name:"xiaoming",
age:12,
toJSON:function(){
return this.name+" is "+this.age;
}
}
json=JSON.stringify(person);
console.log(json); //"xiaoming is 12"
解析
parse()
parse()除了接受json字符串外胧辽,也可以接受一個(gè)函數(shù)參數(shù)。該函數(shù)接受2個(gè)值公黑,一個(gè)鍵和一個(gè)值邑商;
var person=JSON.parse('{"name":"xiaoming","age":12}');
var person=JSON.parse('{"name":"xiaoming","age":12}',function(key,value){
if(key=="age"){
return value+10;
}
else{
return value;
}
});
注意,如果函數(shù)返回undefined凡蚜,則該屬性就會(huì)被忽略人断;