溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

JSON對(duì)象及Json和字面量對(duì)象的區(qū)別

發(fā)布時(shí)間:2020-06-02 21:08:44 來(lái)源:網(wǎng)絡(luò) 閱讀:201 作者:何老師編程 欄目:web開(kāi)發(fā)

JSON對(duì)象的格式:

JSONJavaScript Object Notation)一種簡(jiǎn)單的數(shù)據(jù)格式,比xml更輕巧。XML曾經(jīng)是程序界風(fēng)靡一時(shí)的語(yǔ)言,但JSON的出現(xiàn)對(duì)他也有不小的沖擊。

JSONJavaScript原生格式,這意味著在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

1.1.?JSON示例

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ì)象的方法。

?

1.2.?解析JSON

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>

?

1.3.?JSONJS字面量(重要)

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.4.?操作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>

?

1.5.?JSON小結(jié)

優(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ū)別??


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI