您好,登錄后才能下訂單哦!
JSON對(duì)象的格式:
JSON(JavaScript Object Notation)一種簡(jiǎn)單的數(shù)據(jù)格式,比xml更輕巧。XML曾經(jīng)是程序界風(fēng)靡一時(shí)的語(yǔ)言,但JSON的出現(xiàn)對(duì)他也有不小的沖擊。
JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數(shù)據(jù)不需要任何特殊的API或工具包。
JSON的規(guī)則很簡(jiǎn)單:對(duì)象是一個(gè)無(wú)序的“‘名稱(chēng)/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱(chēng)”后跟一個(gè)“:”(冒號(hào));“‘名稱(chēng)/值’對(duì)”之間使用“,”(逗號(hào))分隔。
規(guī)則如下:
1)?JSON的屬性名稱(chēng)要求以“雙引號(hào)”包裹 ?????
2)?映射用冒號(hào)(“:”)表示。”名稱(chēng)”:值
3)?并列的數(shù)據(jù)之間用逗號(hào)(“,”)分隔。名稱(chēng)1:值1,名稱(chēng)2:值2
4)?映射的集合(對(duì)象)用大括號(hào)(“{}”)表示。{名稱(chēng)1:值1,名稱(chēng)2:值2}
5)?并列數(shù)據(jù)的集合(數(shù)組)用方括號(hào)(“[]”)表示。
?????????[
???????????{名稱(chēng)1:值,名稱(chēng)2:值2},
???????????{名稱(chēng)1:值,名稱(chēng)2:值2}
?????????]
6)?元素值可具有的類(lèi)型:string, number, object, array, true, false, null
JSON 用冒號(hào)(而不是等號(hào))來(lái)賦值。每一條賦值語(yǔ)句用逗號(hào)分開(kāi)。整個(gè)對(duì)象用大括號(hào)封裝起來(lái)??捎么罄ㄌ?hào)分級(jí)嵌套數(shù)據(jù)。
var obj = {};
對(duì)象描述中存儲(chǔ)的數(shù)據(jù)可以是字符串,數(shù)字或者布爾值。對(duì)象描述也可存儲(chǔ)函數(shù),那就是對(duì)象的方法。
?
JSON 只是一種文本字符串。
可以JavaScript 的 eval 語(yǔ)句。函數(shù) eval 會(huì)把一個(gè)字符串當(dāng)作它的參數(shù)。然后這個(gè)字符串會(huì)被當(dāng)作 JavaScript 代碼來(lái)執(zhí)行。因?yàn)?JSON 的字符串就是由 JavaScript 代碼構(gòu)成的,所以它本身是可執(zhí)行的
代碼實(shí)例:
<script language="JavaScript"> ?????var jsonObj?= {"name":"xiaoq","age":18}; ?????//?查看json對(duì)象的原生結(jié)構(gòu) ?????console.debug(jsonObj); // "({name:"xiaoq", age:18})" ?</script> |
<script language="JavaScript"> ?????var jsonStr =’{"name":"xiaoq","age":18}’; ?????//?查看json對(duì)象的原生結(jié)構(gòu) ?????console.debug(eval(“(”+jsonStr+”)”)); // ?</script> |
?
JS字面量:
{name:”小強(qiáng)”}
?
JSON:
???{“name”:”小強(qiáng)”}
?
格式的識(shí)別,可以采用字符串轉(zhuǎn)換方式。
?
但是,eval的參數(shù)是js字符串(并不是JSON字符串)。
var obj = eval("(" + jsonText + ")"); |
?
?
在ECMAScript3.1標(biāo)準(zhǔn)中,已經(jīng)提供了一個(gè)名為JSON的全局對(duì)象,專(zhuān)門(mén)用來(lái)解析和反解析JSON字符串。
var obj = JSON.parse("{}");?// 字符串轉(zhuǎn)JSON JSON.stringify(obj);// 對(duì)象轉(zhuǎn)JSON |
?
例子1:
<script language="JavaScript"> ?????var people ={"firstName": "Brett", "lastName":"McLaughlin", ?????"email": "brett@newInstance.com" }; ?????alert(people.firstName); ?????alert(people.lastName); ?????alert(people.email); ?</script> |
?
?
?
?
<script language="JavaScript"> ??????var people =[ ?????????????????????{"firstName": "Brett","email": "brett@newInstance.com" }, ?????????????????????{"firstName": "Mary","email": "mary@newInstance.com" } ????????????????]; ? ????alert(people[0].firstName); ????alert(people[0].email); ????alert(people[1].firstName); ????alert(people[1].email); ?</script> ? |
?
?
?<script language="JavaScript"> ??????var people ={ ?????????????"username":"mary", ?????????????"age":"20", ?????????????"info":{"tel":"1234566","celltelphone":788666}, ?????????????"address":[ ?????????????????????{"city":"beijing","code":"1000022"}, ?????????????????????{"city":"shanghai","code":"2210444"} ??????????????] ????????}; ? ??????window.alert(people.username); ??????window.alert(people.info.tel); ??????window.alert(people.address[0].city); ?</script> ? |
優(yōu)點(diǎn):
作為一種數(shù)據(jù)傳輸格式,JSON 與 XML 很相似,但是它更加靈巧。
JSON 不需要從服務(wù)器端發(fā)送含有特定內(nèi)容類(lèi)型的首部信息。
缺點(diǎn):
語(yǔ)法過(guò)于嚴(yán)謹(jǐn)
代碼不易讀
eval 函數(shù)存在風(fēng)險(xiǎn)
?
簡(jiǎn)述JavaScript字面量和JSON之間的區(qū)別??
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。