JSON 學(xué)習(xí)之完全手冊(cè) 圖文
更新時(shí)間:2007年05月29日 00:00:00 作者:
JSON 學(xué)習(xí)之完全手冊(cè) 圖文
第一章 何謂JOSN
JSON:JavaScript Object Notation
是Javascript (jscript、ECMA Javascript等)描述對(duì)象數(shù)據(jù)(各種元數(shù)據(jù)其實(shí)也是最簡(jiǎn)單的對(duì)象)的一種數(shù)據(jù)結(jié)構(gòu)。概念和用法均類似于Hash(哈希表)或者關(guān)聯(lián)數(shù)組。
JSON建構(gòu)于兩種結(jié)構(gòu):
“名稱/值”對(duì)的集合(A collection of name/value pairs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。
值的有序列表(An ordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(array)。
這些都是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。事實(shí)上大部分現(xiàn)代計(jì)算機(jī)語(yǔ)言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語(yǔ)言之間交換成為可能。
最簡(jiǎn)單的JSON例子如下:
[
{ name:"Michael", email:"17bity@gmail.com", homepage:"http://www.dbjr.com.cn" },
{ name:"John", email:"john@gmail.com", homepage:"http://s.jb51.net" },
{ name:"Peggy", email:"peggy@gmail.com", homepage:"http://tools.jb51.net" }]
下面這個(gè)例子描述了一個(gè)郵件聯(lián)系人列表,在javascript用eval 運(yùn)行將獲得一個(gè)maillist的對(duì)象實(shí)體,那么就可以用javascript做進(jìn)一步的操作。
var maillist = [
{ name:"Michael", email:"17bity@gmail.com", homepage:"http://www.dbjr.com.cn" },
{ name:"John", email:"john@gmail.com", homepage:"http://s.jb51.net" },
{ name:"Peggy", email:"peggy@gmail.com", homepage:"http://tools.jb51.net" }
]
那么就可以用javascript做進(jìn)一步的操作。
第二章 JSON格式
JSON的基本格式如下,圖片來(lái)自json.org:
對(duì)象是屬性、值對(duì)的集合。一個(gè)對(duì)象的開(kāi)始于"{",結(jié)束于"}"。每一個(gè)屬性名和值間用":"提示,屬性間用","分隔。

數(shù)組是有順序的值的集合。一個(gè)數(shù)組開(kāi)始于"[",結(jié)束于"]",值之間用","分隔。

字符串的定義和C或Java基本一致。

數(shù)字的定義也和C或Java基本一致。

第三章 應(yīng)用 trimpath Template 進(jìn)行 JSON 模版制作
Trimpath Template 是一個(gè)用來(lái)解析Json數(shù)據(jù),生成網(wǎng)頁(yè)代碼的輕量級(jí)JS代碼。
Demo:http://demo.jb51.net/js/js_template/test.htm
trimpath.template基于JavaScript的,跨瀏覽器,采用APL/GPL開(kāi)放源代碼協(xié)議的,可以讓你輕松進(jìn)行基于模板編程方式的純JS引擎。
http://code.google.com/p/trimpath/
它有如下的特點(diǎn):
1、采用標(biāo)準(zhǔn)的JavaScript編寫(xiě),支持跨瀏覽器
2、模板語(yǔ)法類似于:FreeMarker,Velocity,Smarty
3、采用簡(jiǎn)易的語(yǔ)言來(lái)描述大段的字串以及Dom/DHTML操作
4、可以很方便的解析XML文件格式的數(shù)據(jù)到指定模板。
采 用該引擎,可以讓它來(lái)完全處理View方面的事情,服務(wù)端Module直接輸出Data就可以。讓你的MVC模式連成一體,而且由于View由瀏覽器來(lái)處 理,大大減少了服務(wù)器的負(fù)擔(dān),用來(lái)構(gòu)建Ajax技術(shù)的網(wǎng)絡(luò)信息系統(tǒng)應(yīng)用是一個(gè)非常好的選擇。
這是一個(gè)簡(jiǎn)單小巧的 模板工具類, 用來(lái)幫助使用者快速的拼裝出所需要的字符串.
簡(jiǎn)單說(shuō)明: 模板中 #{ ... /} 之間的數(shù)據(jù)將被 作為js腳本執(zhí)行, 而其中VAR關(guān)鍵字代表的就是 seed 的值(從外部傳入的一個(gè)變化的值).
模板分成兩部分來(lái)執(zhí)行, compile 和 run. #{..../}之間的部分在run期間被執(zhí)行,
#{#...../} 之間的部分在編譯期執(zhí)行.編譯期執(zhí)行的代碼中不能傳入seed.
更多的說(shuō)明也不用再寫(xiě)了,因?yàn)榇_實(shí)很簡(jiǎn)單的功能 呵呵.
原理: 實(shí)際上就是 利用傳入的參數(shù)對(duì) 模板字符串中 #{ .../} 的部分進(jìn)行替換.(對(duì) #{ .../}之間的部分執(zhí)行eval(),之后再替換).
如果你對(duì)模版技術(shù)感興趣,也可以通過(guò)研究代碼來(lái)獲得更多的啟發(fā)。
總結(jié)
作為JAVASCRIPT的默認(rèn)數(shù)據(jù)格式,json在進(jìn)行Ajax操作時(shí)顯得非常方便,而且相對(duì)XML文件小了很多。因而在網(wǎng)速不甚理想的,系統(tǒng)耦合度比較高等情況下有更好的表現(xiàn)。
但是XML做為一種可以自描述的格式,在全世界有著更廣泛的應(yīng)用。所以當(dāng)系統(tǒng)要求跨平臺(tái),跨語(yǔ)言時(shí),采用XML仍舊是最好的選擇。
JSON:JavaScript Object Notation
是Javascript (jscript、ECMA Javascript等)描述對(duì)象數(shù)據(jù)(各種元數(shù)據(jù)其實(shí)也是最簡(jiǎn)單的對(duì)象)的一種數(shù)據(jù)結(jié)構(gòu)。概念和用法均類似于Hash(哈希表)或者關(guān)聯(lián)數(shù)組。
JSON建構(gòu)于兩種結(jié)構(gòu):
“名稱/值”對(duì)的集合(A collection of name/value pairs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。
值的有序列表(An ordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(array)。
這些都是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。事實(shí)上大部分現(xiàn)代計(jì)算機(jī)語(yǔ)言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語(yǔ)言之間交換成為可能。
最簡(jiǎn)單的JSON例子如下:
復(fù)制代碼 代碼如下:
[
{ name:"Michael", email:"17bity@gmail.com", homepage:"http://www.dbjr.com.cn" },
{ name:"John", email:"john@gmail.com", homepage:"http://s.jb51.net" },
{ name:"Peggy", email:"peggy@gmail.com", homepage:"http://tools.jb51.net" }]
下面這個(gè)例子描述了一個(gè)郵件聯(lián)系人列表,在javascript用eval 運(yùn)行將獲得一個(gè)maillist的對(duì)象實(shí)體,那么就可以用javascript做進(jìn)一步的操作。
復(fù)制代碼 代碼如下:
var maillist = [
{ name:"Michael", email:"17bity@gmail.com", homepage:"http://www.dbjr.com.cn" },
{ name:"John", email:"john@gmail.com", homepage:"http://s.jb51.net" },
{ name:"Peggy", email:"peggy@gmail.com", homepage:"http://tools.jb51.net" }
]
那么就可以用javascript做進(jìn)一步的操作。
第二章 JSON格式
JSON的基本格式如下,圖片來(lái)自json.org:
對(duì)象是屬性、值對(duì)的集合。一個(gè)對(duì)象的開(kāi)始于"{",結(jié)束于"}"。每一個(gè)屬性名和值間用":"提示,屬性間用","分隔。

數(shù)組是有順序的值的集合。一個(gè)數(shù)組開(kāi)始于"[",結(jié)束于"]",值之間用","分隔。

字符串的定義和C或Java基本一致。

數(shù)字的定義也和C或Java基本一致。

第三章 應(yīng)用 trimpath Template 進(jìn)行 JSON 模版制作
Trimpath Template 是一個(gè)用來(lái)解析Json數(shù)據(jù),生成網(wǎng)頁(yè)代碼的輕量級(jí)JS代碼。
Demo:http://demo.jb51.net/js/js_template/test.htm
trimpath.template基于JavaScript的,跨瀏覽器,采用APL/GPL開(kāi)放源代碼協(xié)議的,可以讓你輕松進(jìn)行基于模板編程方式的純JS引擎。
http://code.google.com/p/trimpath/
它有如下的特點(diǎn):
1、采用標(biāo)準(zhǔn)的JavaScript編寫(xiě),支持跨瀏覽器
2、模板語(yǔ)法類似于:FreeMarker,Velocity,Smarty
3、采用簡(jiǎn)易的語(yǔ)言來(lái)描述大段的字串以及Dom/DHTML操作
4、可以很方便的解析XML文件格式的數(shù)據(jù)到指定模板。
采 用該引擎,可以讓它來(lái)完全處理View方面的事情,服務(wù)端Module直接輸出Data就可以。讓你的MVC模式連成一體,而且由于View由瀏覽器來(lái)處 理,大大減少了服務(wù)器的負(fù)擔(dān),用來(lái)構(gòu)建Ajax技術(shù)的網(wǎng)絡(luò)信息系統(tǒng)應(yīng)用是一個(gè)非常好的選擇。
這是一個(gè)簡(jiǎn)單小巧的 模板工具類, 用來(lái)幫助使用者快速的拼裝出所需要的字符串.
簡(jiǎn)單說(shuō)明: 模板中 #{ ... /} 之間的數(shù)據(jù)將被 作為js腳本執(zhí)行, 而其中VAR關(guān)鍵字代表的就是 seed 的值(從外部傳入的一個(gè)變化的值).
模板分成兩部分來(lái)執(zhí)行, compile 和 run. #{..../}之間的部分在run期間被執(zhí)行,
#{#...../} 之間的部分在編譯期執(zhí)行.編譯期執(zhí)行的代碼中不能傳入seed.
更多的說(shuō)明也不用再寫(xiě)了,因?yàn)榇_實(shí)很簡(jiǎn)單的功能 呵呵.
原理: 實(shí)際上就是 利用傳入的參數(shù)對(duì) 模板字符串中 #{ .../} 的部分進(jìn)行替換.(對(duì) #{ .../}之間的部分執(zhí)行eval(),之后再替換).
如果你對(duì)模版技術(shù)感興趣,也可以通過(guò)研究代碼來(lái)獲得更多的啟發(fā)。
總結(jié)
作為JAVASCRIPT的默認(rèn)數(shù)據(jù)格式,json在進(jìn)行Ajax操作時(shí)顯得非常方便,而且相對(duì)XML文件小了很多。因而在網(wǎng)速不甚理想的,系統(tǒng)耦合度比較高等情況下有更好的表現(xiàn)。
但是XML做為一種可以自描述的格式,在全世界有著更廣泛的應(yīng)用。所以當(dāng)系統(tǒng)要求跨平臺(tái),跨語(yǔ)言時(shí),采用XML仍舊是最好的選擇。
相關(guān)文章
JavaScript中如何使用cookie實(shí)現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)介紹
cookie是網(wǎng)站設(shè)計(jì)者放置在客戶端(瀏覽器)的小文本文件,cookie不僅能夠?qū)崿F(xiàn)保存密碼功能,還可以通過(guò)cookie保存最近瀏覽記錄增加用戶體驗(yàn)。本文給大家介紹js使用cookie實(shí)現(xiàn)記住密碼功能及cookie相關(guān)函數(shù)講解,感興趣的朋友一起看看吧2016-11-11javascript實(shí)現(xiàn)捕捉鍵盤上按下的鍵
JavaScript取得按下鍵盤的鍵是哪個(gè),通過(guò)創(chuàng)建一個(gè)event.keyCode對(duì)象,可有效獲取鍵盤上的鍵,運(yùn)行代碼后,點(diǎn)擊鍵盤上的任意鍵,網(wǎng)頁(yè)上顯示你按下的是哪個(gè)鍵。2015-05-05JavaScript中異步與回調(diào)的基本概念及回調(diào)地獄現(xiàn)象
這篇文章主要介紹了JavaScript中異步與回調(diào)的基本概念,以及回調(diào)地獄現(xiàn)象,本文主要介紹了異步和回調(diào)的基本概念,二者是JavaScript的核心內(nèi)容,需要所有熱愛(ài)JS的小伙伴深入了解,需要的朋友可以參考下2022-07-07JavaScript利用crypto模塊實(shí)現(xiàn)加解密
crypto模塊提供了加密功能,包含對(duì) OpenSSL 的哈希、HMAC、加密、解密、簽名、以及驗(yàn)證功能的一整套封裝。本文將利用它實(shí)現(xiàn)加解密算法,需要的可以參考一下2023-02-02Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁(yè)地球動(dòng)畫(huà)功能
這篇文章主要介紹了Threejs實(shí)現(xiàn)滴滴官網(wǎng)首頁(yè)地球動(dòng)畫(huà)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07javascript之with的使用(阿里云、淘寶使用代碼分析)
這篇文章主要介紹了javascript之with的使用(阿里云、淘寶使用代碼分析),主要是發(fā)現(xiàn)了阿里云使用了這段比較有B格的代碼,所以說(shuō)下這個(gè)怎么樣2016-10-10js前端實(shí)現(xiàn)多圖圖片上傳預(yù)覽的兩個(gè)方法(推薦)
下面小編就為大家?guī)?lái)一篇js前端實(shí)現(xiàn)多圖圖片上傳預(yù)覽的兩個(gè)方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11