JSON(JavaScript對(duì)象表示法)排龄,它的出現(xiàn)讓XML漸漸退出了數(shù)據(jù)交互格式的舞臺(tái)波势。JSON是一種輕量級(jí)的數(shù)據(jù)交互格式,很多編程語(yǔ)言都支持對(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é)尾沒(méi)有分號(hào)
}
//對(duì)比JavaScript對(duì)象字面量表示
var obj={
name:"SunnyChuan",
age:21
};
通過(guò)對(duì)比可以看出,JSON的key必須用雙引號(hào)括起來(lái)(單引號(hào)錯(cuò)誤)竞川,沒(méi)有末尾的分號(hào)店溢,這兩個(gè)是常見(jiàn)的錯(cuò)誤。
3.表示數(shù)組
[
{
"name":"SunnyChuan",
"age":21
},
{
"name":"LuckyJing",
"age":20
}
]
4.復(fù)雜的JSON
通過(guò)對(duì)象委乌、數(shù)組的組合床牧,JSON可以組合成復(fù)雜的形式,數(shù)組里嵌套對(duì)象遭贸,對(duì)象里面嵌套數(shù)組等戈咳,可以通過(guò)JSON在線校驗(yàn)工具來(lái)測(cè)試JSON格式是否正確:http://json.cn/
5.JSON解析和序列化
解析:通過(guò)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帶來(lái)的便利挂脑。