JSON:JavaScript 對(duì)象表示法(JavaScript Object Notation)亲铡。
JSON 是存儲(chǔ)和交換文本信息的語(yǔ)法才写。類似 XML。
JSON 比 XML 更小奖蔓、更快琅摩,更易解析。
什么是 JSON 锭硼?
- JSON 指的是 JavaScript 對(duì)象表示法(JavaScript Object Notation)
- JSON 是輕量級(jí)的文本數(shù)據(jù)交換格式
- JSON 獨(dú)立于語(yǔ)言 *
- JSON 具有自我描述性房资,更易理解
JSON 使用 JavaScript 語(yǔ)法來(lái)描述數(shù)據(jù)對(duì)象,但是 JSON 仍然獨(dú)立于語(yǔ)言和平臺(tái)檀头。JSON 解析器和 JSON 庫(kù)支持許多不同的編程語(yǔ)言轰异。
JSON - 轉(zhuǎn)換為 JavaScript 對(duì)象
JSON 文本格式在語(yǔ)法上與創(chuàng)建 JavaScript 對(duì)象的代碼相同。
由于這種相似性暑始,無(wú)需解析器搭独,JavaScript 程序能夠使用內(nèi)建的 eval() 函數(shù),用 JSON 數(shù)據(jù)來(lái)生成原生的 JavaScript 對(duì)象廊镜。
類似 XML
- JSON 是純文本
- JSON 具有“自我描述性”(人類可讀)
- JSON 具有層級(jí)結(jié)構(gòu)(值中存在值)
- JSON 可通過(guò) JavaScript 進(jìn)行解析
- JSON 數(shù)據(jù)可使用 AJAX 進(jìn)行傳輸
相比 XML 的不同之處
- 沒(méi)有結(jié)束標(biāo)簽
- 更短
- 讀寫(xiě)的速度更快
- 能夠使用內(nèi)建的 JavaScript eval() 方法進(jìn)行解析
- 使用數(shù)組
- 不使用保留字
為什么使用 JSON牙肝?
對(duì)于 AJAX 應(yīng)用程序來(lái)說(shuō),JSON 比 XML 更快更易使用:
- 使用 XML
- 讀取 XML 文檔
- 使用 XML DOM 來(lái)循環(huán)遍歷文檔
- 讀取值并存儲(chǔ)在變量中
使用 JSON
- 讀取 JSON 字符串
- 用 eval() 處理 JSON 字符串
JSON 語(yǔ)法規(guī)則
JSON 語(yǔ)法是 JavaScript 對(duì)象表示法語(yǔ)法的子集。
- 數(shù)據(jù)在名稱/值對(duì)中
- 數(shù)據(jù)由逗號(hào)分隔
- 花括號(hào)保存對(duì)象
- 方括號(hào)保存數(shù)組
JSON 名稱/值對(duì)
JSON 數(shù)據(jù)的書(shū)寫(xiě)格式是:名稱/值對(duì)配椭。
名稱/值對(duì)包括字段名稱(在雙引號(hào)中)虫溜,后面寫(xiě)一個(gè)冒號(hào),然后是值:
"firstName" : "John"
JSON 值
JSON 值可以是:
- 數(shù)字(整數(shù)或浮點(diǎn)數(shù))
- 字符串(在雙引號(hào)中)
- 邏輯值(true 或 false)
- 數(shù)組(在方括號(hào)中)
- 對(duì)象(在花括號(hào)中)
- null
JSON 對(duì)象
JSON 對(duì)象在花括號(hào)中書(shū)寫(xiě):
對(duì)象可以包含多個(gè)名稱/值對(duì):
{ "firstName":"John" , "lastName":"Doe" }
JSON 數(shù)組
JSON 數(shù)組在方括號(hào)中書(shū)寫(xiě):
數(shù)組可包含多個(gè)對(duì)象:
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
在上面的例子中股缸,對(duì)象 "employees" 是包含三個(gè)對(duì)象的數(shù)組衡楞。每個(gè)對(duì)象代表一條關(guān)于某人(有姓和名)的記錄。
JSON 使用 JavaScript 語(yǔ)法
因?yàn)?JSON 使用 JavaScript 語(yǔ)法敦姻,所以無(wú)需額外的軟件就能處理 JavaScript 中的 JSON瘾境。
通過(guò) JavaScript,您可以創(chuàng)建一個(gè)對(duì)象數(shù)組镰惦,并像這樣進(jìn)行賦值:
例子
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
JSON 文件
JSON 文件的文件類型是 ".json"
JSON 文本的 MIME 類型是 "application/json"
把 JSON 文本轉(zhuǎn)換為 JavaScript 對(duì)象
JSON 最常見(jiàn)的用法之一迷守,是從 web 服務(wù)器上讀取 JSON 數(shù)據(jù)(作為文件或作為 HttpRequest),將 JSON 數(shù)據(jù)轉(zhuǎn)換為 JavaScript 對(duì)象旺入,然后在網(wǎng)頁(yè)中使用該數(shù)據(jù)盒犹。
JSON 實(shí)例 - 來(lái)自字符串的對(duì)象
創(chuàng)建包含 JSON 語(yǔ)法的 JavaScript 字符串:
var txt = '{ "employees" : [' +
'{ "firstName":"Bill" , "lastName":"Gates" },' +
'{ "firstName":"George" , "lastName":"Bush" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
由于 JSON 語(yǔ)法是 JavaScript 語(yǔ)法的子集,JavaScript 函數(shù) eval() 可用于將 JSON 文本轉(zhuǎn)換為 JavaScript 對(duì)象眨业。
eval() 函數(shù)使用的是 JavaScript 編譯器急膀,可解析 JSON 文本,然后生成 JavaScript 對(duì)象龄捡。