json 基礎(chǔ)結(jié)構(gòu)
什么是json?json 就是 javascript 用來(lái)處理數(shù)據(jù)的一種格式,這種格式非常簡(jiǎn)單易用。
json,大部分都是用來(lái)處理javascript和web服務(wù)器端之間的數(shù)據(jù)交換,把后臺(tái)web服務(wù)器的數(shù)據(jù)傳遞到前臺(tái),然后使用javascript進(jìn)行處理,例如ajax等。
json支持的語(yǔ)言非常多,包括javascript、c#、php、java等等,這是由于json獨(dú)立于語(yǔ)言的輕量級(jí)的數(shù)據(jù)交換格式,這個(gè)特點(diǎn)有點(diǎn)類似于sql語(yǔ)言。
1. json的兩種結(jié)構(gòu)
json結(jié)構(gòu)共有2種:
- 對(duì)象結(jié)構(gòu);
- 數(shù)組結(jié)構(gòu);
2. 對(duì)象結(jié)構(gòu)
對(duì)象結(jié)構(gòu)是使用大括號(hào)“{}”括起來(lái)的,大括號(hào)內(nèi)是由0個(gè)或多個(gè)用英文逗號(hào)分隔的“關(guān)鍵字:值”對(duì)(key:value)構(gòu)成的。
joson 對(duì)象機(jī)構(gòu)語(yǔ)法:
var jsonobj = { "鍵名1":值1, "鍵名2":值2, …… "鍵名n":值n }
說(shuō)明:
jsonobj指的是json對(duì)象。對(duì)象結(jié)構(gòu)是以“{”開(kāi)始,到“}”結(jié)束。其中“鍵名”和“值”之間用英文冒號(hào)構(gòu)成對(duì),兩個(gè)“鍵名:值”之間用英文逗號(hào)分隔。
注意,這里的鍵名是字符串,但是值可以是數(shù)值、字符串、對(duì)象、數(shù)組或邏輯true和false。
3. json數(shù)組結(jié)構(gòu)
json數(shù)組結(jié)構(gòu)是用中括號(hào)“[]”括起來(lái),中括號(hào)內(nèi)部由0個(gè)或多個(gè)以英文逗號(hào)“,”分隔的值列表組成。
語(yǔ)法:
var arr = [ { "鍵名1":值1, "鍵名2":值2 }, { "鍵名3":值3, "鍵名4":值4 }, …… ]
說(shuō)明:
arr指的是json數(shù)組。數(shù)組結(jié)構(gòu)是以“[”開(kāi)始,到“]”結(jié)束,這一點(diǎn)跟json對(duì)象不同。在json數(shù)組中,每一對(duì)“{}”相當(dāng)于一個(gè)json對(duì)象,大家看看像不像?而且語(yǔ)法都非常類似。
注意,這里的鍵名是字符串,但是值可以是數(shù)值、字符串、對(duì)象、數(shù)組或邏輯true和false。
對(duì)于json對(duì)象結(jié)構(gòu)和json數(shù)組結(jié)構(gòu)的讀取、寫入、修改、刪除和遍歷等操作請(qǐng)到相應(yīng)章節(jié)認(rèn)真查看。
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"v1001_today_music" }, { "type":"click", "name":"歌手簡(jiǎn)介", "key":"v1001_today_singer" }, { "name":"菜單", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"view", "name":"視頻", "url":"http://v.qq.com/" }, { "type":"click", "name":"贊一下我們", "key":"v1001_good" }] }] }
然后用php的json_encode()函數(shù),對(duì)一二維數(shù)組轉(zhuǎn)換成json形式,但轉(zhuǎn)換出來(lái)的json形式:
{ "button": { "1": { "type": "click", "name": "今日歌曲", "key": "v1001_today_music" }, "2": { "type": "click", "name": "歌手簡(jiǎn)介", "key": "v1001_today_singer" }, "3": { "name": "菜單", "sub_button": [ { "type": "view", "name": "搜索", "url": "http://www.soso.com/" }, { "type": "view", "name": "視頻", "url": "http://v.qq.com/" }, { "type": "click", "name": "贊一下我們", "key": "v1001_good" } ] } } }
看出來(lái)形式是不一致的。
json有兩種數(shù)據(jù):無(wú)序的對(duì)象結(jié)構(gòu)、有序的數(shù)組結(jié)構(gòu)。
- 1. 無(wú)序的對(duì)象結(jié)構(gòu)
無(wú)序的對(duì)象結(jié)構(gòu)在不同語(yǔ)言中稱法不同,比如在python中稱為字典,在js中稱為json對(duì)象,總之就是鍵/值對(duì)組合形式。剛才我轉(zhuǎn)換出來(lái)的json結(jié)構(gòu)就是無(wú)序的鍵/值對(duì)組合 - 2. 有序的數(shù)組結(jié)構(gòu)
有序的的數(shù)組結(jié)構(gòu),即代碼片斷2所展示的結(jié)構(gòu)。將數(shù)組作為有序數(shù)組進(jìn)行轉(zhuǎn)換json,就可以得到有序的json數(shù)組結(jié)構(gòu)。