JSON(JavaScript Object Notation,JavaScript对象表示法),是Javascript的一个严格的子集,利用JavaScript中的一些模式来表示结构化数据。
**JSON只是一种数据格式**,不是一种编程语言。不从属于JavaScript.
1:语法
- 简单值:与js语法相同,可表示字符串,数值,布尔值和null。
"Hello World!"
- 对象:无序的键值对
/**
*没有声明变量(JSON中没有变量的概念),末尾没有分号。
*对象的属性必须加双引号。对象可嵌入对象
*/
{
"name":"wy",
"age":18,
"school":{
"name":"hust",
"location":"wuhan"
}
}
- 数组:有序的值的列表
[{
"name":"wy",
"age":18,
"school":{
"name":"hust",
"location":"wuhan"
}
}
]
数组和对象通常是JSON最外层形式,数组使用中括号,对象使用大括号。
2:解析与序列化
与XML数据结构要解析成DOM文档而且从中提取数据极为麻烦相比,JSON数据格式可以解析成有用的JS对象优势极其明显。
例如上面的对象保存到user变量中,获取name
/*例如上面的JSON对象保存到user变量中,js获取name*/
user[0].name
/*DOM结构中查找*/
doc.getElementsByTagName("user")[0].getAttribute("name")
JSON对象有两个方法:
stringify()——把js对象序列化为JSON字符串
parse()——把JSON字符串解析为原生js
var user = {
"name":"wy",
"age":18,
"school":{
"name":"hust",
"location":"wuhan"
}
};
var jsonText = JSON.stringify(user);
var userCopy = JSON.parse(jsonText);
/*过滤*/
var jsonText = JSON.stringify(user,["name","age"]);
/*根据属性名处理要序列化对象中的属性,返回undefined会删除该属性*/
var jsonText = JSON.stringify(user,function(key,value){
switch(key){
case "name":
return test;
case "age":
return undefined;
default:
return value;
}
});
//第三个参数用于控制结果中的缩进和空白符。
var jsonText = JSON.stringify(user,null,4);
stringify()和parse()方法还能接收参数来完成过滤,缩进,还原等功能。具体可查。