1.JSON语法
JSON是一种轻量级的数据交换格式。
JSON语法可以表示以下三种类型的值:
简单值:string,number,boolean,null,不支持undefined
对象
数组
语法:
JSON字符串必须使用双引号
没有声明变量
没有末尾的分号
2.JSON解析与序列化
2.1JSON序列化
序列化函数:JSON.stringify()
JSON.stringify()可接收三个参数:
要序列化的JavaScript对象
一个过滤器(可以是一个数组也可以是一个函数)
控制结果中的缩进和空白符
用法1:过滤结果
//数组过滤器
var book = {
"title":"Professional JavaScript",
"edition":3,
"year":2011,
"authors":[
"EvanChen",
"Nicholas"
]
};
var jsonText = JSON.stringify(book,["title","edition"]);//jsonText 中只包含title,edition两个属性
//函数过滤器
var book = {
"title":"Professional JavaScript",
"edition":3,
"year":2011,
"authors":[
"EvanChen",
"Nicholas"
]
};
var jsonText = JSON.stringify(book,function(key,value){
switch(key){
case:"authors":
return value.join(",");
case:"year":
return 5000;
case:"edition":
return undefined;//相当于删除该属性
default:
return value;
}
}
);//jsonText 中只包含title,edition两个属性
用法2:字符串缩进
var book = {
"title":"Professional JavaScript",
"edition":3,
"year":2011,
"authors":[
"EvanChen",
"Nicholas"
]
};
var jsonText = JSON.stringify(book, null,4);
console.log(jsonText);
//输出结果
{
"title": "Professional JavaScript",
"edition": 3,
"year": 2011,
"authors": [
"EvanChen",
"Nicholas"
]
}
2.2解析选项
函数:JSON.parse()
JSON.parse()可接收两个参数
JSON数据
还原函数,该函数将在每个键值对上调用
var book = {
"title":"Professional JavaScript",
"edition":3,
"year":2011,
"authors":[
"EvanChen",
"Nicholas"
],
releaseDate:new Date(2011,11,1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText,function(key,value){
if(key==="releaseDate"){
return new Date(value);
} else{
return value;
}
}
);
console.log(bookCopy.releaseDate.getFullYear());