一、介紹
這節(jié)課呢,我們來了解的是JavaScript JSON概述,
向服務(wù)器發(fā)出Ajax請(qǐng)求時(shí),可以以兩種不同的方式從服務(wù)器響應(yīng)檢索數(shù)據(jù):一種是使用XMLHttpRequest對(duì)象的reponseXML屬性訪問XML格式的數(shù)據(jù);一種是XMLHttpRequest對(duì)象的responseText屬性訪問字符串格式的數(shù)據(jù)。當(dāng)前,XML是進(jìn)行數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)語言,但是使用XML的缺點(diǎn)之一是很難對(duì)它進(jìn)行解析并提取要添加到頁面的數(shù)據(jù)。
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,我們稱之為JavaScript對(duì)象表示法。使用JSON進(jìn)行數(shù)據(jù)傳輸?shù)膬?yōu)勢(shì)之一是JSON實(shí)際上就是JavaScript。它基于ECMAScript第3版中JavaScript對(duì)象字面量語法子集的一種文本格式。這表示可以使用responseText從服務(wù)器中檢索JSON數(shù)據(jù),然后再使用JavaScript的eval()方法將JSON字符串轉(zhuǎn)換成JavaScript對(duì)象,那么,使用附加JavaScript就可以很地從該對(duì)象中提取數(shù)據(jù),而不需要處理DOM。
另外,也有針對(duì)大部分編程語言(包括C++,C#,ColdFusion、Java、Perl、PHP和Python)的JSON庫,這些庫能將上述語言格式化數(shù)據(jù)轉(zhuǎn)換成JSON格式。
關(guān)于JSON,最重要的是要理解它是一種數(shù)據(jù)格式,不是一種編程語言。雖然具有相同的語法形式,但JSON并不從屬于JavaScript。而且,并不是只有JavaScript才使用JSON,畢竟JSON只是一種數(shù)據(jù)格式。
盡管有許多宣傳關(guān)于XML如何擁有跨平臺(tái),跨語言的優(yōu)勢(shì),然而,除非應(yīng)用于Web Services,否則,在普通的Web應(yīng)用中,開發(fā)都經(jīng)常為XML的解析作秀了腦筋,無論是服務(wù)器端生成或處理XML,還是客戶端用JavaScript解析XML,都常常導(dǎo)致復(fù)雜的代碼,極低的開發(fā)效率。實(shí)際上,對(duì)于大多數(shù)Web應(yīng)用來說,根本不需要要復(fù)雜的XML來傳輸數(shù)據(jù),XML的擴(kuò)展性很少具有優(yōu)勢(shì),許多Ajax應(yīng)用甚至直接返回HTML片段來構(gòu)建動(dòng)態(tài)Web頁面。和返回XML并解析它相比,返回HTML片段大大降低了系統(tǒng)的復(fù)雜性,但同時(shí)缺少了一定的靈活性。XML使用元素、屬性、實(shí)體和其他結(jié)構(gòu)。JSON不是文檔格式,因此它不需要這些附加結(jié)構(gòu)。因?yàn)镴SON數(shù)據(jù)只包括“名-值”對(duì)(對(duì)象)或值(數(shù)組),所以JSON數(shù)據(jù)比同等的XML數(shù)據(jù)占用更少的空間,執(zhí)行速度更快。
二、知識(shí)點(diǎn)介紹
1、什么是JSON
2、JSON - 轉(zhuǎn)換為 JavaScript 對(duì)象
3、與XML相同之處
4、與XML不同之處
5、為什么使用JSON
6、JSON語法
7、JSON名稱/值對(duì)
8、JSON值
9、JSON使用JavaScript語法
10、JSON文件
三、上課對(duì)應(yīng)視頻的說明文檔
1、什么是JSON?
JSON: JavaScript Object Notation(JavaScript 對(duì)象表示法)
JSON 是存儲(chǔ)和交換文本信息的語法。類似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON指的是JavaScript對(duì)象表示法(JavaScript Object Notation)
JSON是輕量級(jí)的文本數(shù)據(jù)交換格式
JSON獨(dú)立于語言:JSON使用JavaScript語法來描述數(shù)據(jù)對(duì)象,但是JSON仍然獨(dú)立于語言和平臺(tái)。JSON解析器和JSON庫支持許多不同的編程語言。
目前非常多的動(dòng)態(tài)(PHP,JSP,.NET)編程語言都支持JSON。
JSON具有自我描述性,更易理解。
2、JSON - 轉(zhuǎn)換為 JavaScript 對(duì)象
JSON 文本格式在語法上與創(chuàng)建 JavaScript 對(duì)象的代碼相同。
由于這種相似性,無需解析器,JavaScript 程序能夠使用內(nèi)建的 eval() 函數(shù),用 JSON 數(shù)據(jù)來生成原生的 JavaScript 對(duì)象。
3、與 XML 相同之處
JSON 是純文本
JSON 具有"自我描述性"(人類可讀)
JSON 具有層級(jí)結(jié)構(gòu)(值中存在值)
JSON 可通過 JavaScript 進(jìn)行解析
JSON 數(shù)據(jù)可使用 AJAX 進(jìn)行傳輸
4、與 XML 不同之處
沒有結(jié)束標(biāo)簽
更短
讀寫的速度更快
能夠使用內(nèi)建的 JavaScript eval() 方法進(jìn)行解析
使用數(shù)組
不使用保留字
5、為什么使用 JSON?
對(duì)于 AJAX 應(yīng)用程序來說,JSON 比 XML 更快更易使用:
使用 XML
讀取 XML 文檔
使用 XML DOM 來循環(huán)遍歷文檔
讀取值并存儲(chǔ)在變量中
使用 JSON
讀取 JSON 字符串
用 eval() 處理 JSON 字符串
6、JSON 語法
JSON 語法是 JavaScript 語法的子集。
JSON 語法規(guī)則
JSON 語法是 JavaScript 對(duì)象表示語法的子集。
數(shù)據(jù)在名稱/值對(duì)中
數(shù)據(jù)由逗號(hào)分隔
大括號(hào)保存對(duì)象
中括號(hào)保存數(shù)組
7、JSON 名稱/值對(duì)
JSON 數(shù)據(jù)的書寫格式是:名稱/值對(duì)。
名稱/值對(duì)包括字段名稱(在雙引號(hào)中),后面寫一個(gè)冒號(hào),然后是值:"name" : "菜鳥教程"
這很容易理解,等價(jià)于這條 JavaScript 語句:
name = "菜鳥教程"
8、JSON 值
JSON 值可以是:
數(shù)字(整數(shù)或浮點(diǎn)數(shù))
字符串(在雙引號(hào)中)
邏輯值(true 或 false)
數(shù)組(在中括號(hào)中)
對(duì)象(在大括號(hào)中)
Null
8.1、JSON 數(shù)字
JSON 數(shù)字可以是整型或者浮點(diǎn)型:
{ "age":30 }
8.2、JSON 布爾值
JSON 布爾值可以是 true 或者 false:
{ "flag":true }
8.3、JSON null
JSON 可以設(shè)置 null 值:
{ "runoob":null }
8.4、JSON 對(duì)象
JSON 對(duì)象在大括號(hào)({})中書寫:
對(duì)象可以包含多個(gè)名稱/值對(duì):
{ "name":"菜鳥教程" , "url":"www.runoob.com" }
這一點(diǎn)也容易理解,與這條 JavaScript 語句等價(jià):
name = "菜鳥教程" url = "www.runoob.com"JSON 數(shù)組
8.5、JSON 數(shù)組
JSON 數(shù)組在中括號(hào)中書寫:
數(shù)組可包含多個(gè)對(duì)象:
{ "sites": [ { "name":"菜鳥教程" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ] }
在上面的例子中,對(duì)象 "sites" 是包含三個(gè)對(duì)象的數(shù)組。每個(gè)對(duì)象代表一條關(guān)于某個(gè)網(wǎng)站(name、url)的記錄。
9、JSON 使用 JavaScript 語法
因?yàn)?JSON 使用 JavaScript 語法,所以無需額外的軟件就能處理 JavaScript 中的 JSON。通過 JavaScript,您可以創(chuàng)建一個(gè)對(duì)象數(shù)組,并像這樣進(jìn)行賦值:
實(shí)例
var sites = [ { "name":"runoob" , "url":"www.runoob.com" }, { "name":"google" , "url":"www.google.com" }, { "name":"微博" , "url":"www.weibo.com" } ];
可以像這樣訪問 JavaScript 對(duì)象數(shù)組中的第一項(xiàng)(索引從 0 開始):
sites[0].name;
返回的內(nèi)容是:Runoob
可以像這樣修改數(shù)據(jù):
sites[0].name="菜鳥教程";
在下面的章節(jié),您將學(xué)到如何把 JSON 文本轉(zhuǎn)換為 JavaScript 對(duì)象。
10、JSON 文件
JSON 文件的文件類型是 ".json"
JSON 文本的 MIME 類型是 "application/json"