![javascriptObjectNotation(JSON)javascript功能核心子集_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/14/b01d3c36-be42-450c-81b6-5e4091728a12/b01d3c36-be42-450c-81b6-5e4091728a121.gif)
![javascriptObjectNotation(JSON)javascript功能核心子集_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/14/b01d3c36-be42-450c-81b6-5e4091728a12/b01d3c36-be42-450c-81b6-5e4091728a122.gif)
![javascriptObjectNotation(JSON)javascript功能核心子集_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/14/b01d3c36-be42-450c-81b6-5e4091728a12/b01d3c36-be42-450c-81b6-5e4091728a123.gif)
![javascriptObjectNotation(JSON)javascript功能核心子集_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/14/b01d3c36-be42-450c-81b6-5e4091728a12/b01d3c36-be42-450c-81b6-5e4091728a124.gif)
![javascriptObjectNotation(JSON)javascript功能核心子集_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/14/b01d3c36-be42-450c-81b6-5e4091728a12/b01d3c36-be42-450c-81b6-5e4091728a125.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、JavaScript Object Notation (JSON) JavaScript功能核心子集關(guān)鍵字: json JavaScript Object Notation ,以下簡稱JSON。 JSON提供了一種簡約的機(jī)制來創(chuàng)建數(shù)字和對象圖。這樣做可以降低復(fù)雜性,一般傻瓜會這樣做: 先申明一個(gè)對象數(shù)組,之后往數(shù)組里寫值。如: Javascript代碼 1. var school=new Object(); 2. school.classes=new Array(); 3. school.classes1="1
2、班" 4. school.classes2="2班" 5. school.classes3="3班" var school=new Object();school.classes=new Array();school.classes1="1班"school.classes2="2班"school.classes3="3班"這樣數(shù)組里嵌對象,對象里嵌數(shù)組的方法很不美觀,也不可讀。使用JSON就簡單了。直接: Javascr
3、ipt代碼 1. school.classes= 2. 1:1班, 3. 2:2班, 4. 3:3班, 5. ; school.classes=1:1班,2:2班,3:3班,;JSON采用了JAVA中MAP容器的做法,以“鍵:值”定義數(shù)組classes。當(dāng)然,JSON還可以定義更加復(fù)雜的對象,可以說JSON就是天生為了構(gòu)件這樣復(fù)雜對象數(shù)組的。 有的時(shí)候還可以創(chuàng)建這樣復(fù)雜的: Javascript代碼 1. var myLibraryObject= 2.
4、location:"my house", 3. keywords:"root","tedium", 4. books: 5. title:"just go", 6. authors: 7. name:"yang",age:10, 8. name:"wu",age:22 9. , 10
5、. Date:"longDate" 11. , 12. 13. ; var myLibraryObject=location:"my house",keywords:"root","tedium",books:title:"just go",authors:name:"yang",age:10,name:"wu",age:22,Date:"longDate&
6、quot;,;引用對象是屬性、值對的集合。 一個(gè)對象的開始于“”,結(jié)束于“”。每一個(gè)屬性名和值間用“:”提示,屬性間用“,”分隔。 數(shù)組是有順序的值的集合。一個(gè)數(shù)組開始于"",結(jié)束于"",值之間用","分隔。值可以是引號里的字符串、數(shù)字、true、false、null,也 可以是對象或數(shù)組。這些結(jié)構(gòu)都能嵌套。 Javascript代碼 1. var myJSONObject = "bindings": 2.
7、0; "ircEvent": "PRIVMSG", "method": "newURI", "regex": "http:/.*", 3. "ircEvent": "PRIVMSG", "meth
8、od": "deleteURI", "regex": "delete.*", 4. "ircEvent": "PRIVMSG", "method": "randomURI", "regex": "random.*"
9、; 5. 6. ; var myJSONObject = "bindings": "ircEvent": "PRIVMSG", "method": "newURI", "regex": "http:/.*", "ircEvent": "PRIVMSG", "method": &quo
10、t;deleteURI", "regex": "delete.*", "ircEvent": "PRIVMSG", "method": "randomURI", "regex": "random.*" ;上面的示例,創(chuàng)建了一個(gè)包括單獨(dú)成員”bindings”的對象,此成員包括一個(gè)含有三個(gè)對象(”ircEvent”, “method”, 與 “regex”)的數(shù)組 成員可以通過.或者下標(biāo)操作符檢索。 Javascript代碼 1
11、. myJSONObject.bindings0.method / "newURI" myJSONObject.bindings0.method / "newURI"為了將JSON文本轉(zhuǎn)換為對象,可以使用eval()函數(shù)。eval()函數(shù)調(diào)用JavaScript編輯器。由于JSON是JavaScript的子集,因此編譯器將正確的解析文本并產(chǎn)生對象結(jié)構(gòu)。文本必須括在括號中避免產(chǎn)生JavaScript的語法歧義。 Javascript代碼 1. var myObject&
12、#160;= eval('(' + myJSONtext + ')'); var myObject = eval('(' + myJSONtext + ')');eval函數(shù)非??焖?。它可以編譯執(zhí)行任何JavaScript程序,因此產(chǎn)生了安全性問題。當(dāng)使用可信任與完善的源代碼時(shí)才可以使用eval函 數(shù)。這樣可以更安全的使用JSON解析器。使用XMLHttpRequest的web應(yīng)用,頁面之間的通訊只允許同源,因此是可以信任的。但這卻不是完善 的。如果服務(wù)器沒有
13、嚴(yán)謹(jǐn)?shù)腏SON編碼,或者沒有嚴(yán)格的輸入驗(yàn)證,那么可能傳送包括危險(xiǎn)腳本的無效JSON文本。eval函數(shù)將執(zhí)行惡意的腳本。 使用JSON解析器可以防止此類事件。JSON解析器只能辨識JSON文本,拒絕所有腳本。提供了本地JSON支持的瀏覽器的JSON解析器將遠(yuǎn)快于eval函數(shù)。預(yù)計(jì)未來的ECMAScript標(biāo)準(zhǔn)將支持本地JSON。 Javascript代碼 1. var myObject = JSON.parse(myJSONtext, reviver); var myObject = JSON.parse(myJSONtext, re
14、viver);一個(gè)替換函數(shù)(reviver function)做為可選參數(shù)被最終結(jié)果的每一級的鍵(key)與值(value)調(diào)用。 每個(gè)值都將被替換函數(shù)的值代替。這可以用來將一般的類改變成偽類的實(shí)例,或者將日期字符串轉(zhuǎn)變?yōu)槿掌趯ο蟆?Javascript代碼 1. myData = JSON.parse(text, function (key, value) 2. var type; 3.
15、60;if (value && typeof value = 'object') 4. type = value.type; 5. if (typeof type = 'string'
16、 && typeof windowtype = 'function') 6. return new (windowtype)(value); 7. 8.
17、 9. return value; 10. ); myData = JSON.parse(text, function (key, value) var type; if (value && typeof value = 'object') type = value.type; if (typeof type = 'string' && typeof windowtype = '
18、;function') return new (windowtype)(value); return value;);JSON stringifier進(jìn)行反向操作,可以把JavaScript數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON文本。JSON不支持循環(huán)數(shù)據(jù)結(jié)構(gòu),因此應(yīng)小心不要為JSON stringifier提供循環(huán)結(jié)構(gòu)。 Javascript代碼 1. var myJSONText = JSON.stringify(myObject, replacer); var myJSONText = JSON.stringify(myObject,
19、 replacer);如果stringify函數(shù)發(fā)現(xiàn)一個(gè)帶有toJSON方法的對象,它將執(zhí)行此方法,并且返回產(chǎn)生的值。這樣一個(gè)對象就可以決定自己的JSON表現(xiàn)。 stringifier方法可以攜帶一個(gè)可選的字符串?dāng)?shù)組。這些字符串被用于選擇包括在JSON文本中的屬性。 stringifier方法可以攜帶一個(gè)可選的替代(replacer)函數(shù)。它將在結(jié)構(gòu)中每個(gè)值的toJSON方法(如果有的話)后面執(zhí)行。它將每個(gè)鍵與值做為參數(shù)傳遞,當(dāng)然對象要包含這個(gè)鍵。值將被stringified返回。 如果沒有提供數(shù)組或替代函數(shù),一個(gè)用于忽略被集成的屬性的可選替代函數(shù)將被提供。如果想要所有被繼承的屬性,可以提供一
20、個(gè)簡單的替換函數(shù): Javascript代碼 1. var myJSONText = JSON.stringify(myObject, function (key, value) 2. return value; 3. ); var myJSONText = JSON.stringify(myObject, function (key, value) return value;);值在JSON中不代表
21、任何內(nèi)容,函數(shù)與未定義(undefined)被排除在外。 不能確定的數(shù)量將被替換為null。為了替代其它的值,可以像下面一樣使用替換(replacer)函數(shù) Javascript代碼 1. function replacer(key, value) 2. if (typeof value = 'number' && !isFinite(value) 3. &
22、#160; return String(value); 4. 5. return value; 6. function replacer(key, value) if (typeof value = 'number' && !isFinite(value) return String(va
23、lue); return value;開放源代碼的JSON解析器與JSON stringifier可以使用。通過minified可以小于2.5K。 下面是對json對象的增刪查改操作: /聲明json對象 Javascript代碼 1. var jsonObj2=persons:name:"jordan",sex:"m",age:"40", name:"bryant",sex:"m",age:"28", name:"McGrady&qu
24、ot;,sex:"m",age:"27" var jsonObj2=persons:name:"jordan",sex:"m",age:"40", name:"bryant",sex:"m",age:"28", name:"McGrady",sex:"m",age:"27" ; Javascript代碼 1. var pe
25、rsons=jsonObj2.persons; 2. var str="" 3. var person=name:"yaoMing",sex:"m",age:"26" 4. /以下為json對象的操作,去掉注釋可以查看操作結(jié)果 5. /jsonObj2.persons.push(person);/數(shù)組最后加一條記錄 6. /js
26、onObj2.persons.pop();/刪除最后一項(xiàng) 7. /jsonObj2.persons.shift();/刪除第一項(xiàng) 8. jsonObj2.persons.unshift(person);/數(shù)組最前面加一條記錄 只要適合Javascript的方法都是可以用在JSON對象的數(shù)組中的!所以還有另外的方法splice( )進(jìn)行crud操作! /刪除 9. /jsonObj2.persons.splice(0,2);/開始位置,刪除個(gè)數(shù)
27、; 10. /替換不刪除 11. var self=name:"tom",sex:"m",age:"24" 12. var brother=name:"Mike",sex:"m",age:"29" 13. jsonObj2.persons.splice(1,0,self,brother,self);/開始位置,刪除個(gè)數(shù),插入對象
28、60; 14. /替換并刪除 15. /jsonObj2.persons.splice(0,1,self,brother);/開始位置,刪除個(gè)數(shù),插入對象 16. 17. for(var i=0;i<persons.length;i+) var cur_person=personsi; str+=cur_+"'sex is "+cur_person.sex+"
29、;and age is "+cur_person.age+"<br><br>" 18. document.writeln(str); 19. /轉(zhuǎn)換為json文本 20. var myjsonobj = JSON.stringify(jsonObj2); 21. document.writeln(myjsonobj); 22. </script> var persons=jsonObj2.persons; var str=&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版數(shù)學(xué)八年級下冊《構(gòu)建知識體系》聽評課記錄2
- 中圖版地理七年級上冊1.3《地圖》聽課評課記錄
- 魯教版歷史六年級上冊第7課《春秋戰(zhàn)國的紛爭》聽課評課記錄
- 北師大版歷史七年級上冊第8課《早期中華文化》聽課評課記錄
- 青島版數(shù)學(xué)九年級下冊《畫樹狀圖法和列表法》聽評課記錄
- 小學(xué)二年級上冊數(shù)學(xué)口算練習(xí)題【人教版新課標(biāo)】
- 北師大版道德與法治八年級下冊第2課磨礪堅(jiān)強(qiáng)意志聽課評課記錄
- 魯教版數(shù)學(xué)八年級上冊4.4《圖形變化的簡單應(yīng)用》聽評課記錄
- 農(nóng)業(yè)銀行銀醫(yī)金融業(yè)務(wù)合作協(xié)議書范本
- 經(jīng)銷商合作合同范本
- 2025年大慶職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年中國南方航空股份有限公司招聘筆試參考題庫含答案解析
- 商務(wù)部發(fā)布《中國再生資源回收行業(yè)發(fā)展報(bào)告(2024)》
- 山東省濟(jì)南市2024-2024學(xué)年高三上學(xué)期1月期末考試 地理 含答案
- 2025年福建新華發(fā)行(集團(tuán))限責(zé)任公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 【課件】液體的壓強(qiáng)(課件)-2024-2025學(xué)年人教版物理八年級下冊
- 實(shí)施彈性退休制度暫行辦法解讀課件
- 冷凍食品配送售后服務(wù)體系方案
- 江蘇省駕??荚嚳颇恳豢荚囶}庫
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學(xué)2023-2024學(xué)年七上期末數(shù)學(xué)試題(解析版)
- 2024-2030年中國自動(dòng)光學(xué)檢測儀(AOI)市場競爭格局與前景發(fā)展策略分析報(bào)告
評論
0/150
提交評論