json的定義、標(biāo)準(zhǔn)格式及json字符串檢驗(yàn)
現(xiàn)在越來(lái)越多的項(xiàng)目和開(kāi)發(fā)插件等默認(rèn)都會(huì)支持和使用json數(shù)據(jù)格式,作為數(shù)據(jù)保持、傳輸?shù)囊环N方式。
說(shuō)是其中一種,就標(biāo)示還有好多其他格式。比如:最多是xml。webservice的標(biāo)準(zhǔn)數(shù)據(jù)格式。
不過(guò)由于json是JavaScript 對(duì)象表示法(JavaScript Object Notation),天生就對(duì)js支持很好,
所以現(xiàn)在很多的ajax等都使用json,反而會(huì)更好處理一些。
1、定義
什么是 JSON ?
1.JSON 指的是 JavaScript 對(duì)象表示法(JavaScript Object Notation)
2.JSON 是輕量級(jí)的文本數(shù)據(jù)交換格式
3.JSON 獨(dú)立于語(yǔ)言 *
4.JSON 具有自我描述性,更易理解
* JSON 使用 JavaScript 語(yǔ)法來(lái)描述數(shù)據(jù)對(duì)象,但是 JSON 仍然獨(dú)立于語(yǔ)言和平臺(tái)。JSON 解析器和 JSON 庫(kù)支持許多不同的編程語(yǔ)言。
w3c的標(biāo)準(zhǔn)說(shuō)明如下:
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。 易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。
JSON建構(gòu)于兩種結(jié)構(gòu):
1.“名稱/值”對(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)。
2.值的有序列表(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ǔ)言之間交換成為可能。
JSON具有以下這些形式:
對(duì)象是一個(gè)無(wú)序的“‘名稱/值'對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值' 對(duì)”之間使用“,”(逗號(hào))分隔。
注意:如果后臺(tái)直接傳遞對(duì)象來(lái)js,則是json格式的。參考文章:
[Jquery+asp.net 后臺(tái)數(shù)據(jù)傳到前臺(tái)js進(jìn)行解析的辦法說(shuō)明]
[jquery ajax傳遞對(duì)象(數(shù)組)到后臺(tái)并解析的實(shí)現(xiàn)]
數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))開(kāi)始,“]”(右中括號(hào))結(jié)束。值之間使用“,”(逗號(hào))分隔。
注意:傳遞數(shù)據(jù)這個(gè)就好理解。其實(shí)就一個(gè)array。array和json直接的關(guān)系,請(qǐng)參考文章:
[javascript對(duì)象及數(shù)組 json的一些了解說(shuō)明]
2、json標(biāo)準(zhǔn):
json表示:我沒(méi)有標(biāo)準(zhǔn)。哈哈。我說(shuō)的標(biāo)準(zhǔn)是指什么樣的格式化的字符串js才能解析成json?
下面這個(gè)json串就是正確的:
{
"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
},
{
"firstName": "Thomas",
"lastName": "Carter"
}
]
}
注意:
json串,在js中會(huì)解析成對(duì)象。其中對(duì)象的名稱比如:
employees、firstName,必須用""或者''引起來(lái)才行。后面的value,如果是int和bool(js是不區(qū)分的哦),可以不用""或者''引起來(lái),其他的字符串必須引起來(lái),尤其是記得把時(shí)間日期引起來(lái)!
總結(jié)如下:
里面的是一個(gè)對(duì)象,如果是多個(gè)對(duì)象,則用逗號(hào)間隔,即{},{},這樣就組成了一個(gè)對(duì)象序列,為了辨別開(kāi)始和結(jié)束,則需要加上[]才能進(jìn)行傳遞,則實(shí)際傳遞的形式應(yīng)該是[{},{}],如果只要傳遞一個(gè)對(duì)象,則{}的形式就可以了。接下來(lái)就是對(duì)象屬性的表現(xiàn)方式了,屬性必須在""
里面,屬性與值之間用:隔開(kāi),屬性之間用,來(lái)分隔,如果屬性的值為數(shù)組,則用[]包括起來(lái),這樣實(shí)際傳遞的數(shù)據(jù)格式可能有:1、{"屬性1":值1,"屬性2":值2},如果值為字符串,則也需要用""括起來(lái)(下同)。2、{"屬性1":值1,"屬性2":[值1,值2]},其中屬性2是一個(gè)數(shù)組,包含
了值1和值2。3、{"屬性1":值1,"屬性2":{"屬性a":值a,"屬性b":[值b,值c]}},這個(gè)比較復(fù)雜了,屬性2是個(gè)對(duì)象,這個(gè)對(duì)象由包含屬性a和屬性b,屬性b又是一個(gè)數(shù)組包含值b和值c。我想這些應(yīng)該是最基本了,其余的就是在此基礎(chǔ)上的拓展而已。
實(shí)際中,要序列化對(duì)象,在.net中只要調(diào)用Newtonsoft.Json.JavaConvert.SerializeObject();函數(shù)即可
參考:
jquery ajax傳遞對(duì)象(數(shù)組)到后臺(tái)并解析的實(shí)現(xiàn)
http://www.dhdzp.com/article/40131.htm
3、json有這么多要求(其實(shí)不多了),我們?cè)趺磁袛嗥湔_性?
有辦法,就是你打印出來(lái)字符串,自己的按照上面的結(jié)構(gòu)對(duì)應(yīng)一下,或者直接使用在線檢驗(yàn)工具檢驗(yàn)。
參考:http://www.kjson.com/
http://tool.oschina.net/codeformat/json
- Json對(duì)象與Json字符串互轉(zhuǎn)(4種轉(zhuǎn)換方式)
- js 將json字符串轉(zhuǎn)換為json對(duì)象的方法解析
- js中將字符串轉(zhuǎn)換成json的三種方式
- 解析JSON對(duì)象與字符串之間的相互轉(zhuǎn)換
- JS解析json數(shù)據(jù)并將json字符串轉(zhuǎn)化為數(shù)組的實(shí)現(xiàn)方法
- js 轉(zhuǎn)json格式的字符串為對(duì)象或數(shù)組(前后臺(tái))的方法
- JS中的數(shù)組轉(zhuǎn)變成JSON格式字符串的方法
- javaScript中json字符串操作詳細(xì)例子
相關(guān)文章
利用NodeJS的子進(jìn)程(child_process)調(diào)用系統(tǒng)命令的方法分享
child_process即子進(jìn)程可以創(chuàng)建一個(gè)系統(tǒng)子進(jìn)程并執(zhí)行shell命令,在與系統(tǒng)層面的交互上挺有用處2013-06-06
JSON 學(xué)習(xí)之JSON in JavaScript詳細(xì)使用說(shuō)明
只需要在前臺(tái)頁(yè)面中引入相應(yīng)的javascript即可測(cè)試2010-02-02
js解析與序列化json數(shù)據(jù)(二)序列化探討
上一節(jié)我們講解了JSON.stringify()的基本用法,這一節(jié)我們來(lái)重點(diǎn)探討一下序列化,單獨(dú)或組合使用這兩個(gè)參數(shù)(過(guò)濾器/數(shù)組),可以更全面深入地控制JSON的序列化,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)json有所幫助2013-02-02
javascript 循環(huán)讀取JSON數(shù)據(jù)的代碼
服務(wù)端向客戶端返回了一串JSON格式的數(shù)據(jù)。在有些時(shí)候,因?yàn)槟承┨厥獾脑蛭覀儾恢涝嫉膋ey值,因此我們此時(shí)無(wú)法象正常一樣通過(guò)key值,來(lái)獲取value值。這時(shí)我們必須循環(huán)讀取JSON對(duì)象數(shù)據(jù)。廢話少說(shuō),來(lái)看例子。2010-07-07
Javascript 通過(guò)json自動(dòng)生成Dom的代碼
主要還是通過(guò)遞歸和迭代來(lái)遍歷json成員生成html元素 ,比較好的是num能制定循環(huán)次數(shù)可以少寫很多代碼.具體應(yīng)用看場(chǎng)景了2010-04-04

