出自:https://blog.csdn.net/luanpeng825485697/article/details/77046717
js中json 全解
js对象
var person0={
name:"person0", //key和value间用冒号连接
age:11 //不同的key-value对之间用逗号连接,最后一个value后不加符号。
};
json对象
var person0 = {
"name":"person0", //与js对象的对象字面量的区别在于属性必须加引号
"age":12
};
var person1 = {
"name":"person1",
"age":12,
"school":{ //JSON中对象可以嵌套。每个JSON对象使用{}包含
"name":"school1",
"address":"北大对面"
}
toJSON:function(){ //toJSON函数是对象序列化时的调用虚函数
return this.name;
}
};
json数组
var persons = [person0,person1,person2]; //JSON数组,每一个元素都是json对象
json对象的操作
person0.name = "person0" //json对象与js对象操作方法相同
person0['name'] = 'person0'
person0.newName = "pppp" //也是支持属性的增删查改操作
json数组元素的操作
persons[2].age=person0.age; //JSON中数组对象与js对象使用方法相同
将js对象、json对象、json数组转化json字符串(序列化)
var personstr = JSON.stringify(persons); //JSON.stringify将对象(js的或JSON的)转化为JSON字符串(称为序列化)。可以序列化对象或对象数组。会自动滤出值为underfined的属性。
person2str =JSON.stringify(person2,["name","age"],"--"); //第二个参数是过滤器,表示只保留name和age两个属性。第三个参数是换行缩进,可为数字缩进空格数目,最大缩进为10,可为字符串,表示缩进字符串。调用stringify,执行顺序:toJSON虚函数或对象本身->函数过滤器->存在属性进行序列化->缩进参数进行格式化
personstr = JSON.stringify(person2,function(key,value){ //使用函数为过滤器
if(key=="name"||key=="age")
return value;
else
return undefined; //返回undefined就不会再被序列化
},4);
将json字符串转化为json对象、json数组
persons = JSON.parse(personstr); //JSON.parse将字符串转化为js对象或数组
person2 = JSON.parse(person2str,function(key,value){ //使用函数控制转化操作
if(key=="name") return "family"+value;
else return value;
});