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