JSON建構於兩種結構:
1. “名稱/值”對的集合。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
2. 值的有序列表。在大部分語言中,它被理解為數組(array)。
這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支持它們。這使得壹種數據格式在同樣基於這些結構的編程語言之間交換成為可能。
JSON具有以下這些形式:
1.對象是壹個無序的“‘名稱/值’對”集合。壹個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟壹個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
例:{"name":"張三","age":20,"birthday":"1982-07-20"}
這是對象在json中的表示形式.即{"key1":"value1","key2":"value2",...}
2.數組是值(value)的有序集合。壹個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。
例:["張三","李四","王五"]
這是數組在json中的表示形式.即[value1,value2,value3,....]
3.值(value)可以是雙引號括起來的字符串(string)、數值(number)、true、false、 null、對象(object)或者數組(array)。這些結構可以嵌套。
4.字符串(string)是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。壹個字符(character)即壹個單獨的字符串(character string)。
字符串(string)與C或者Java的字符串非常相似。
5.數值(number)也與C或者Java的數值非常相似。除去未曾使用的八進制與十六進制格式。除去壹些編碼細節。
註:妳只要記住前兩種形式就可以了。
註意:key壹定要用引號,而value如果是字符串,也壹定要用引號引起來。切記,有的系統中,只當雙引號是有效的,而不認單引號。所以建議用雙引號。
更多的格式內容請訪問http://json.org/json-zh.html
以上說了json的表示形式,那麽現在來看壹下它的使用:
因為語言的不同,在action中對json的使用方式也不壹樣,但思路是壹樣的,那就是將json轉換為對象或數組,我們這裏只提及客戶端的javascript中json的轉換。妳使用哪種語言,請參照本語言使用json的方式。
1.首先,在javascript中要獲取前端頁面中所有輸入域的值,保存到數組或壹個對象中。
2.將對象或數組轉換成JSON格式。有壹個js文件能讓我們轉換起來非常方便,就是prototype.js,導入這個文件後,使用(對象.toJSON())或(數組.toJSON()),這個對象或數組就被保存成為了JSON格式的數據
3.將這個JSON對象傳入action中進行處理,然後返回。
4.如果返回的是壹個json,那麽各戶端接收以後需要將json格式的數據轉換為javascrip中的對象或數組。同樣使用prototype.js,(json對象.evalJSON());好了,這樣就轉換成js中的對象或數組了。同樣妳也可以使用javascript中的eval函數進行轉換。(eval(json對象)),這兩種方式都可以效果是相同的,都是返回的javascript的對象或數組。妳現在就可以在客戶端的javascript中使用這個對象或數組了
註意:prototype.js與json.js可能會有沖突,建議只使用壹種。當然在這裏沒有介紹json.js的使用,原因是prototype.js的功能已經十分強大,在使用prototype.js時,已經沒有必要再使用json.js了