什么是json?
JSON是一種基于文本的數(shù)據(jù)交換方式,或者叫做數(shù)據(jù)描述格式,你是否該選用他首先肯定要關(guān)注它所擁有的優(yōu)點(diǎn)。
JSON的優(yōu)點(diǎn):
1、基于純文本,跨平臺傳遞極其簡單;
2、Javascript原生支持,后臺語言幾乎全部支持;
3、輕量級數(shù)據(jù)格式,占用字符數(shù)量極少,特別適合互聯(lián)網(wǎng)傳遞;
4、可讀性較強(qiáng),雖然比不上XML那么一目了然,但在合理的依次縮進(jìn)之后還是很容易識別的;
5、容易編寫和解析,當(dāng)然前提是你要知道數(shù)據(jù)結(jié)構(gòu);
JSON的缺點(diǎn)當(dāng)然也有,但在作者看來實在是無關(guān)緊要的東西,所以不再單獨(dú)說明。
JSON的格式或者叫規(guī)則:
JSON能夠以非常簡單的方式來描述數(shù)據(jù)結(jié)構(gòu),XML能做的它都能做,因此在跨平臺方面兩者完全不分伯仲。
1、JSON只有兩種數(shù)據(jù)類型描述符,大括號{}和方括號[],其余英文冒號:是映射符,英文逗號,是分隔符,英文雙引號""是定義符。
2、大括號{}用來描述一組“不同類型的無序鍵值對集合”(每個鍵值對可以理解為OOP的屬性描述),方括號[]用來描述一組“相同類型的有序數(shù)據(jù)集合”(可對應(yīng)OOP的數(shù)組)。
3、上述兩種集合中若有多個子項,則通過英文逗號,進(jìn)行分隔。
4、鍵值對以英文冒號:進(jìn)行分隔,并且建議鍵名都加上英文雙引號"",以便于不同語言的解析。
5、JSON內(nèi)部常用數(shù)據(jù)類型無非就是字符串、數(shù)字、布爾、日期、null 這么幾個,字符串必須用雙引號引起來,其余的都不用,日期類型比較特殊,這里就不展開講述了,只是建議如果客戶端沒有按日期排序功能需求的話,那么把日期時間直接作為字符串傳遞就好,可以省去很多麻煩。
json實例:
// 描述一個人
var person = {
"Name": "Bob",
"Age": 32,
"Company": "IBM",
"Engineer": true
}
// 獲取這個人的信息
var personAge = person.Age;
// 描述幾個人
var members = [
{
"Name": "Bob",
"Age": 32,
"Company": "IBM",
"Engineer": true
},
{
"Name": "John",
"Age": 20,
"Company": "Oracle",
"Engineer": false
},
{
"Name": "Henry",
"Age": 45,
"Company": "Microsoft",
"Engineer": false
}
]
// 讀取其中John的公司名稱
var johnsCompany = members[1].Company;
// 描述一次會議
var conference = {
"Conference": "Future Marketing",
"Date": "2012-6-1",
"Address": "Beijing",
"Members":
[
{
"Name": "Bob",
"Age": 32,
"Company": "IBM",
"Engineer": true
},
{
"Name": "John",
"Age": 20,
"Company": "Oracle",
"Engineer": false
},
{
"Name": "Henry",
"Age": 45,
"Company": "Microsoft",
"Engineer": false
}
]
}
// 讀取參會者Henry是否工程師
var henryIsAnEngineer = conference.Members[2].Engineer;