语法(可以表示三种类型的值):
1.简单值:字符串、数值、布尔值、null ;不支持undefined
注意:json的字符串必须使用双引号 ‘chenzhijie’
2.对象:无序的键值对
Json对象.和js对象字面量的区别:没有声明变量 、没有末尾的分号、对象的属性加双引号
例:{
“name”: ”chenzhijie” ,
“age” : 25
}
3. 数组:有序的值得列表 ,可以是简单值、对象或数组
注意:Json数组也没有变量和分号
数组和对象可以组合
json对象
1. eval( )函数 可以解析、解释并返回js对象和数组
2. JSON.stringify() : 把js对象序列化为一个json字符串
值为undefined的属性会被跳过
三个参数: 要序列化的对象、过滤器(数组或函数)、选项(是否在json字符串中保留缩进)
1.参数中的函数:接受两个参数 属性(键)名、属性值
注意:如果函数返回了undefined ,则相应的属性会被忽略
var book={
title:"chenzhijie",
authors:[
"czj"
],
edition:3,
year:2017
};
varjsonText=JSON.stringify(book,function(key,value){
switch(key){
case "authors":
return value.join(",");
case "edition":
return undefined;
case "year":
return 5000;
default:
return value;
}
});
alert(jsonText);//{"title":"chenzhijie","authors":"czj","year":5000}
2. 参数中的选项:用于控制结果中的缩进和空白符
可以使数值或者字符串 ,长度不能超过10
序列化对象的顺序:
1. 如果存在toJSON() 方法,而且能通过它返回有效的值,则调用该方法,否则返回对象本身
2. 如果有第二个参数,则应用这个过滤器,value是第一步返回的值
3. 对第二步返回的值进行相应的格式化
4. 如果提供了第三个参数,执行相应的格式化
3. JSON.parse() : json转化为相应的js 值
两个参数:要解析的对象、还原函数
还原函数:接收两个参数 键和值 返回一个值,如果返回undefined,则删除相应的键