JSON(JavaScript對(duì)象表示法),它的出現(xiàn)讓XML漸漸退出了數(shù)據(jù)交互格式的舞臺(tái)。JSON是一種輕量級(jí)的數(shù)據(jù)交互格式,很多編程語言都支持對(duì)JSON的解析和序列化。
JSON格式實(shí)際上只有兩個(gè)東西:key和value,value可以表示簡(jiǎn)單值、對(duì)象、數(shù)組。
1.表示簡(jiǎn)單值
//最簡(jiǎn)單的JSON
"SunnyChuan"
2.表示對(duì)象
//JSON
{
"name":"SunnyChuan",//逗號(hào)分隔
"age":21//結(jié)尾沒有分號(hào)
}
//對(duì)比JavaScript對(duì)象字面量表示
var obj={
name:"SunnyChuan",
age:21
};
通過對(duì)比可以看出,JSON的key必須用雙引號(hào)括起來(單引號(hào)錯(cuò)誤),沒有末尾的分號(hào),這兩個(gè)是常見的錯(cuò)誤。
3.表示數(shù)組
[
{
"name":"SunnyChuan",
"age":21
},
{
"name":"LuckyJing",
"age":20
}
]
4.復(fù)雜的JSON
通過對(duì)象、數(shù)組的組合,JSON可以組合成復(fù)雜的形式,數(shù)組里嵌套對(duì)象,對(duì)象里面嵌套數(shù)組等,可以通過JSON在線校驗(yàn)工具來測(cè)試JSON格式是否正確:http://json.cn/
5.JSON解析和序列化
解析:通過JSON.parse()將JSON數(shù)據(jù)轉(zhuǎn)化為對(duì)象,eval()也可以解析JSON但是不推薦。
//myJson.json文件
{
"name":"SunnyChuan",
"age":21
}
//前端代碼
window.onload=function(){
var xml=new XMLHttpRequest();
xml.onreadystatechange=function()
{
if(xml.readyState==4 && xml.status==200)
{
console.log(JSON.parse(xhr.responseText).name)//SunnyChuan
}
};
xml.open("get","myJson.json");
xml.send();
}
序列化:JSON.stringify()將JavaScript對(duì)象序列化為JSON數(shù)據(jù)格式發(fā)送給后端。
var obj={
name:"SunnyChuan",
age:21
};
//省去一些代碼
xml.open("POST","ajax.php");
var data=JSON.stringify(obj);
xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xml.send(data);
后端將會(huì)接收到字符串{"name":"SunnyChuan","age":21}
JSON作為數(shù)據(jù)格式是前后端交互必用(也可以用XML)的,個(gè)人做項(xiàng)目的時(shí)候深深感受到了JSON帶來的便利。