JavaScript中的JSON

序列化

stringify()

用于把js对象序列化为JSON字符串

var person={
name:"xiaoming",
age:12
}

var json=JSON.stringify(person); //{"name":"xiaoming","age":12}

stringify() 除了可以接受对象外,还可以接受2个参数,第一个参数是过滤器,可以是对象属性的数组集合,也可以是函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进;

数组过滤器
json=JSON.stringify(person,['name']); //{"name":"xiaoming"}
函数过滤器
json=JSON.stringify(person,function(key,value){
    switch(key){
        case "name":
           return value+",wang";
        case "age":
           return undefined;
        default:
           return value;
    }
});
//{"name":"xiaoming,wang"}

注意,如果函数返回undefined,则该属性就会被忽略;

字符串缩进
json=JSON.stringify(person,null,4);
{
    "name": "xiaoming",
    "age": 12
}

toJSON()

向对象添加toJSON()方法:

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字符串外,也可以接受一个函数参数。该函数接受2个值,一个键和一个值;

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;
    }
});

注意,如果函数返回undefined,则该属性就会被忽略;

你可能感兴趣的:(JavaScript中的JSON)