摘要:簡單說,就是由中的對象和數(shù)組組合而成,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。例如會執(zhí)行再彈出并不會判斷中的字符串是否合法,而且還會執(zhí)行其中的代碼。
JSON是什么?
定義
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,同樣也是一種常用的數(shù)據(jù)交換格式,與XML類似。它采用鍵值對的方式來組織。
格式
JSON數(shù)據(jù)的書寫格式是:名稱/值對 如:{name:value,...}
逗號相隔的為同級元素,還可嵌套包含多層。
如下:
{"list1":[{"name":"A","sex":"female"},{"name":"B","sex":"female"},...],"list2":[{"name":"X","sex":"male"},{"name":"Y","sex":"male"},...],...}
兩種結(jié)構(gòu)
從上面的代碼就可以看出 list1為下面{"name":"A","sex":"female"},{"name":"B","sex":"female"},...的父層(list2同理)所以說,json既可以表達一個簡單的key/value,也可以表達一個復(fù)雜的Map或List。
簡單說,json就是由javascript中的對象和數(shù)組組合而成,所以這兩種結(jié)構(gòu)就是對象和數(shù)組兩種結(jié)構(gòu),通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。
值
1.數(shù)字(整數(shù)或浮點數(shù))
2.字符串(雙引號中)
3.邏輯值(true 或 false)
4.數(shù)組(在方括號中)
5.對象(在花括號中)
6.null
優(yōu)點
1.易于人們閱讀和編寫,同時也易于機器解析和生成;
2.是獨立于語言的,也就是說不管什么語言,都可以解析json,只需按json規(guī)則來就好;
3.json相對于XML來說,長度小,可大大減小帶寬(網(wǎng)絡(luò)傳輸中);
4.json讀寫速度比XML快。
JSON數(shù)據(jù)的解析
對于json的解析有兩種方式:eval() 和 JSON.parse()
var jsonobj = eval("("+jsondata+")"); var jsonobj = JSON.parse(jsondata);
一般,在代碼中使用eval()是很危險的!特別是用其執(zhí)行第三方的JSON數(shù)據(jù)(包含惡意代碼)時,盡可能使用JSON.parse()解析,該方法還可以捕捉JSON中的語法錯誤。
例如:
var jsondata = { "staff":[ {"name":"A","age":alert(123)}, {"name":"B","age":30}, {"name":"C","age":35} ] } var jsonobj = eval("("+jsondata+")"); //會執(zhí)行alert(123) alert(jsonobj.staff[0].name);//再彈出"A"
eval()并不會判斷js中的字符串是否合法,而且還會執(zhí)行其中的js代碼。所以說無論何時在js中使用eval()都危險。
var jsondata = { "staff":[ {"name":"A","age":alert(123)}, {"name":"B","age":30}, {"name":"C","age":35} ] } var jsonobj = JSON.parse(jsondata); //會在控制臺拋出錯誤--->字符串不合法(語法錯誤) alert(jsonobj.staff[0].name);//不執(zhí)行
實際中使用JSON.parse()來解析json數(shù)據(jù)很適合。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80235.html
摘要:一般在存當(dāng)前含有當(dāng)前時間的實體時,只需要配置好數(shù)據(jù)庫的存儲字段即可?;敬a部分循環(huán)的寫法 這幾天初步了解了百度云的后臺架構(gòu)部分,當(dāng)然了,自己了解的僅限于后臺java相關(guān)的部分,先說一下客戶端這邊使用的技術(shù):1、spring boot : 與前端進行直接交互的服務(wù)是用spring來實現(xiàn)的(后臺服務(wù)還需要調(diào)用其他的基礎(chǔ)服務(wù),如redis 數(shù)據(jù)庫服務(wù) 訂單服務(wù) cdn服務(wù) openstac...
摘要:也正是引用類型的數(shù)據(jù)的這個特點,保證了我們的無論多少層的子元素都能被正確的穿到了對應(yīng)的父元素上五總結(jié)丈高樓始于平地,打好基礎(chǔ)知識異常重要文章出自成都社區(qū),歡迎大家的加入,和我們一起討論學(xué)習(xí) 一、問題描述 相信做前端的小伙伴都有遇到過將一個平鋪的 ‘樹’ 結(jié)構(gòu)轉(zhuǎn)換成一個真正的 ‘樹’ 結(jié)構(gòu),比如說下面這種: var _JSON_ = [ {id: 7, name: 豬,...
摘要:說明我寫這篇文章的目的其實是想科普一下基礎(chǔ)的數(shù)據(jù)傳輸和交互流程,其實也就是寫協(xié)議相關(guān)的一些東西。同樣,相對于后端程序來說也無外乎就是一大堆有一定意義的字符串,而對于腳本來說,就是表示一個數(shù)據(jù)對象。 說明 我寫這篇文章的目的其實是想科普一下基礎(chǔ)的數(shù)據(jù)傳輸和交互流程,其實也就是寫http協(xié)議相關(guān)的一些東西。而寫這篇文章也主要是源于最近和長久以來很多人問的問題都是有關(guān)于這塊的(可能問題并不是...
摘要:前言列表項目是一個簡介而靈活的應(yīng)用框架提供的一系列強大特性幫助你創(chuàng)建各種應(yīng)用,和豐富的工具。返回的對象是一個鍵值對,當(dāng)為的時候,鍵值對中的值就為或形式,為的時候,則可為任何數(shù)據(jù)類型。以上兩行代碼已經(jīng)覆蓋了大部分的使用場景。 前言 列表項目Express是一個簡介而靈活的node.js Web應(yīng)用框架提供的一系列強大特性幫助你創(chuàng)建各種 Web 應(yīng)用,和豐富的HTTP工具。 正文 一個...
摘要:狀態(tài)碼的正確使用。解析請求獲取隨機數(shù)范圍并將生產(chǎn)的結(jié)果以格式返回。在代碼的最后,我們會在合法的參數(shù)返回內(nèi)生成隨機數(shù)并將結(jié)果返回給客戶端。雖然示例很簡單,但是它已經(jīng)包含了使用構(gòu)建的基本流程解析請求,設(shè)置狀態(tài)碼,返回響應(yīng)數(shù)據(jù)。 showImg(https://segmentfault.com/img/remote/1460000010820713); 在介紹了那么多 Express 核心概...
閱讀 2073·2021-11-24 09:39
閱讀 788·2021-09-30 09:48
閱讀 980·2021-09-22 15:29
閱讀 2415·2019-08-30 14:17
閱讀 1891·2019-08-30 13:50
閱讀 1343·2019-08-30 13:47
閱讀 982·2019-08-30 13:19
閱讀 3423·2019-08-29 16:43