json相關(guān)知識介紹
來源:程序員人生 發(fā)布時間:2017-02-09 08:39:06 閱讀次數(shù):4531次
原文來自搬磚工,如需轉(zhuǎn)載請注明出處
現(xiàn)在愈來愈流行使用json作為進(jìn)行數(shù)據(jù)傳輸格式,今天我們就總結(jié)1下json的相干知識
1、甚么是json
1.json 指的是 JavaScript 對象表示法(
JavaScript Object Notation)
2.json 是輕量級的文本數(shù)據(jù)交換格式
3.json 獨立于語言*
4.json 具有自我描寫性,更容易理解
注:json 使用 Javascript語法來描寫數(shù)據(jù)對象,但是 json 依然獨立于語言和平臺。json 解析器和 json 庫支持許多不同的編程語言。 目前非常多的動態(tài)(PHP,JSP,.NET)編程語言都支持json。
2、json與js的關(guān)系
json 文本格式在語法上與創(chuàng)建 JavaScript 對象的代碼相同。由于這類相似性,無需解析器,JavaScript 程序能夠使用內(nèi)建的 eval() 函數(shù),用 json 數(shù)據(jù)來生成原生的 JavaScript 對象。
3、與XML比較
相同點:
1.json 是純文本
2.json 具有”自我描寫性”(人類可讀)
3.json 具有層級結(jié)構(gòu)(值中存在值)
4.json 可通過 JavaScript 進(jìn)行解析
5.json 數(shù)據(jù)可以使用 AJAX 進(jìn)行傳輸
不同點:
1.沒有結(jié)束標(biāo)簽
2.更短
3.讀寫的速度更快
4.能夠使用內(nèi)建的 JavaScript eval() 方法進(jìn)行解析
5.使用數(shù)組
6.不使用保存字
4、為何使用 json?
對 AJAX 利用程序來講,json 比 XML 更快更容易使用:
使用 XML
1.讀取 XML 文檔
2.使用 XML DOM 來循環(huán)遍歷文檔
3.讀取值并存儲在變量中
使用 json
1.讀取 json 字符串
2.用 eval() 處理 json 字符串
5、json語法
1.json語法規(guī)則
json 語法是 JavaScript 對象表示法語法的子集。規(guī)則以下
a.數(shù)據(jù)在名稱/值對中
b.數(shù)據(jù)由逗號分隔
c.花括號保存對象
d.方括號保存數(shù)組
2.json名稱/值對
json 數(shù)據(jù)的書寫格式是:名稱/值對。
名稱/值對包括字段名稱(在雙引號中),后面寫1個冒號,然后是值:
"name" : "搬磚工"
這很容易理解,等價于這條 JavaScript 語句:
name = "搬磚工"
3.json值
json 值可以是:
a.數(shù)字(整數(shù)或浮點數(shù))
b.字符串(在雙引號中)
c.邏輯值(true 或 false)
d.數(shù)組(在方括號中)
e.對象(在花括號中)
f.null
4.json對象
SON 對象在花括號中書寫:
對象可以包括多個名稱/值對:
{ "name":"搬磚工" , "url":"www.banzg.com" }
這1點也容易理解,與這條 JavaScript 語句等價:
name = "搬磚工"
url = "www.banzg.com"
5.json數(shù)組
json 數(shù)組在方括號中書寫:
數(shù)組可包括多個對象:
{
"sites": [
{ "name":"搬磚工" , "url":"www.banzg.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"百度" , "url":"www.baidu.com" }
]
}
在上面的例子中,對象 “sites” 是包括3個對象的數(shù)組。每一個對象代表1條關(guān)于某個網(wǎng)站的信息。
6.json使用 JavaScript 語法
由于 json 使用 JavaScript 語法,所以無需額外的軟件就可以處理 JavaScript 中的 json。
通過 JavaScript,您可以創(chuàng)建1個對象數(shù)組,并像這樣進(jìn)行賦值:
var sites = [
{ "name":"banzg" , "url":"www.banzg.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"百度" , "url":"www.baidu.com" }
];
可以像這樣訪問 JavaScript 對象數(shù)組中的第1項(索引從 0 開始):
sites[0].name;
返回的內(nèi)容是:
banzg
可以像這樣修改數(shù)據(jù):
sites[0].name="搬磚工";
7.json文件
a.json 文件的文件類型是 “.json”
b.json 文本的 MIME 類型是 “application/json”
6、如何使用json
1.把json文本轉(zhuǎn)換為js對象
json最多見的用法之1,是從 web
服務(wù)器上讀取json數(shù)據(jù)(作為文件或作為 HttpRequest),將json數(shù)據(jù)轉(zhuǎn)換為JavaScript對象,然后在網(wǎng)頁中使用該數(shù)據(jù)。
下面我們使用字符串作為輸入進(jìn)行演示(而不是文件)。
創(chuàng)建包括 json 語法的 JavaScript 字符串:
var txt = '{ "sites" : [' +
'{ "name":"搬磚工" , "url":"www.banzg.com" },' +
'{ "name":"google" , "url":"www.google.com" },' +
'{ "name":"百度" , "url":"www.baidu.com" } ]}';
由于 json 語法是 JavaScript 語法的子集,JavaScript 函數(shù) eval() 可用于將 json 文本轉(zhuǎn)換為 JavaScript 對象。
eval() 函數(shù)使用的是 JavaScript 編譯器,可解析 json 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法毛病:
var obj = eval ("(" + txt + ")");
在網(wǎng)頁中使用 JavaScript 對象:
var txt = '{ "sites" : [' +
'{ "name":"搬磚工" , "url":"www.banzg.com" },' +
'{ "name":"google" , "url":"www.google.com" },' +
'{ "name":"百度" , "url":"www.baidu.com" } ]}';
var obj = eval ("(" + txt + ")");
document.getElementById("name").innerHTML=obj.sites[0].name
document.getElementById("url").innerHTML=obj.sites[0].url
2.json 解析器
注:eval() 函數(shù)可編譯并履行任何 JavaScript 代碼。這隱藏了1個潛伏的安全問題。
使用 json 解析器將 json 轉(zhuǎn)換為 JavaScript 對象是更安全的做法。json 解析器只能辨認(rèn) json 文本,而不會編譯腳本。
在閱讀器中,這提供了原生的 json 支持,而且 json 解析器的速度更快。
較新的閱讀器和最新的 ECMAScript (JavaScript) 標(biāo)準(zhǔn)中均包括了原生的對 json 的支持。
Web 閱讀器支持:
a.Firefox (Mozilla) 3.5
b.Internet Explorer 8
c.Chrome
d.Opera 10
e.Safari 4
Web 軟件支持:
a.jQuery
b.Yahoo UI
c.Prototype
d.Dojo
e.ECMAScript 1.5
對較老的閱讀器,可以使用 JavaScript 庫: https://github.com/douglascrockford/json-js
json 格式最初是
originally specified by Douglas Crockford
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈