JSON教程[通俗易懂](w3cschool)
JSON(JavaScriptObject Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。它基于JavaScriptProgramming Language,StandardECMA-262 3rd Edition – December 1999的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C,C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。
JSON建構(gòu)于兩種結(jié)構(gòu):
“名稱/值”對(duì)的集合(Acollection of name/value pairs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyedlist),或者關(guān)聯(lián)數(shù)組 (associativearray)。
值的有序列表(Anordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(array)。
這些都是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。事實(shí)上大部分現(xiàn)代計(jì)算機(jī)語(yǔ)言都以某種形式支持它們。這使得一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語(yǔ)言之間交換成為可能。
JSON具有以下這些形式:
對(duì)象是一個(gè)無(wú)序的“‘名稱/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值’ 對(duì)”之間使用“,”(逗號(hào))分隔。
數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))開(kāi)始,“]”(右中括號(hào))結(jié)束。值之間使用“,”(逗號(hào))分隔。
值(value)可以是雙引號(hào)括起來(lái)的字符串(string)、數(shù)值(number)、true、false、null、對(duì)象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。
字符串(string)是由雙引號(hào)包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個(gè)字符(character)即一個(gè)單獨(dú)的字符串(character string)。
字符串(string)與C或者Java的字符串非常相似。
數(shù)值(number)也與C或者Java的數(shù)值非常相似。除去未曾使用的八進(jìn)制與十六進(jìn)制格式。除去一些編碼細(xì)節(jié)。
空白可以加入到任何符號(hào)之間。
一、什么是 JSON ?
·JSON 指的是 JavaScript 對(duì)象表示法(JavaScriptObjectNotation)
·JSON 是輕量級(jí)的文本數(shù)據(jù)交換格式
·JSON 獨(dú)立于語(yǔ)言:JSON 使用 Javascript語(yǔ)法來(lái)描述數(shù)據(jù)對(duì)象,但是 JSON 仍然獨(dú)立于語(yǔ)言和平臺(tái)。JSON 解析器和 JSON 庫(kù)支持許多不同的編程語(yǔ)言。 目前非常多的動(dòng)態(tài)(PHP,JSP,.NET)編程語(yǔ)言都支持JSON。
·JSON 具有自我描述性,更易理解
二、與 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)簽
·更短
·讀寫的速度更快
·能夠使用內(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ù)的書寫格式是:名稱/值對(duì)。
名稱/值對(duì)包括字段名稱(在雙引號(hào)中),后面寫一個(gè)冒號(hào),然后是值:
“firstName”: “John”
這很容易理解,等價(jià)于這條 JavaScript 語(yǔ)句:
firstName =”John”
七、JSON 值
JSON 值可以是:
·數(shù)字(整數(shù)或浮點(diǎn)數(shù))
·字符串(在雙引號(hào)中)
·邏輯值(true 或 false)
·數(shù)組(在中括號(hào)中)
·對(duì)象(在大括號(hào)中)
·null
八、JSON 數(shù)字
JSON 數(shù)字可以是整型或者浮點(diǎn)型:
{
“age“:30}
九、JSON 對(duì)象
JSON 對(duì)象在大括號(hào)({})中書寫:
對(duì)象可以包含多個(gè)名稱/值對(duì):
{ “firstName”:“John”,“lastName”:“Doe”}
這一點(diǎn)也容易理解,與這條 JavaScript 語(yǔ)句等價(jià):
firstName =”John”
lastName =”Doe”
1.JSON 對(duì)象使用在大括號(hào)({})中書寫。
對(duì)象可以包含多個(gè)key/value(鍵/值)對(duì)。
key 必須是字符串,value 可以是合法的 JSON 數(shù)據(jù)類型(字符串, 數(shù)字, 對(duì)象, 數(shù)組, 布爾值或 null)。
key 和 value 中使用冒號(hào)(:)分割。
每個(gè) key/value 對(duì)使用逗號(hào)(,)分割。
2.訪問(wèn)對(duì)象值
你可以使用點(diǎn)號(hào)(.)來(lái)訪問(wèn)對(duì)象的值:
實(shí)例
varmyObj, x;
myObj = {
“name“:“google“,
“alexa“:10000,
“site“:null};
x = myObj.name;
你也可以使用中括號(hào)([])來(lái)訪問(wèn)對(duì)象的值:
實(shí)例
varmyObj, x;
myObj = {
“name“:“google“,
“alexa“:10000,
“site“:null};
x = myObj[“name“];
3.循環(huán)對(duì)象
你可以使用 for-in 來(lái)循環(huán)對(duì)象的屬性:
實(shí)例
varmyObj = {
“name“:“google“,
“alexa“:10000,
“site“:null
};
for(xinmyObj){
document.getElementById(“demo“).innerHTML += x + “<br>“;
}
在 for-in 循環(huán)對(duì)象的屬性時(shí),使用中括號(hào)([])來(lái)訪問(wèn)屬性的值:
實(shí)例
varmyObj = {
“name“:“google“,
“alexa“:10000,
“site“:null
};
for(xinmyObj){
document.getElementById(“demo“).innerHTML += myObj[x] + “<br>“;
}
4.嵌套 JSON 對(duì)象
JSON 對(duì)象中可以包含另外一個(gè) JSON 對(duì)象:
實(shí)例
myObj = {
“name“:“google“,
“alexa“:10000,
“sites“: {
“site1“:“www.google.com“,
“site2“:“m.google.com“,
“site3“:“c.google.com“
}
}
你可以使用點(diǎn)號(hào)(.)或者中括號(hào)([])來(lái)訪問(wèn)嵌套的 JSON 對(duì)象。
實(shí)例
x = myObj.sites.site1; // 或者x = myObj.sites[“site1“];
5.修改值
你可以使用點(diǎn)號(hào)(.)來(lái)修改 JSON 對(duì)象的值:
實(shí)例
myObj.sites.site1 = “www.google.com“;
你可以使用中括號(hào)([])來(lái)修改 JSON 對(duì)象的值:
實(shí)例
myObj.sites[“site1“] = “www.google.com“;
6.刪除對(duì)象屬性
我們可以使用delete關(guān)鍵字來(lái)刪除 JSON 對(duì)象的屬性:
實(shí)例
deletemyObj.sites.site1;
你可以使用中括號(hào)([])來(lái)刪除 JSON 對(duì)象的屬性:
實(shí)例
deletemyObj.sites[“site1“]
十、JSON 數(shù)組
JSON 數(shù)組在中括號(hào)中書寫:
數(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 數(shù)組在中括號(hào)中書寫。
JSON 中數(shù)組值必須是合法的 JSON 數(shù)據(jù)類型(字符串, 數(shù)字, 對(duì)象, 數(shù)組, 布爾值或 null)。
JavaScript 中,數(shù)組值可以是以上的 JSON數(shù)據(jù)類型,也可以是 JavaScript 的表達(dá)式,包括函數(shù),日期,及undefined。
1.JSON 對(duì)象中的數(shù)組
對(duì)象屬性的值可以是一個(gè)數(shù)組:
實(shí)例
{
“name“:“網(wǎng)站“,
“num“:3,
“sites“:[“Google“, “Runoob“, “Taobao“]
}
我們可以使用索引值來(lái)訪問(wèn)數(shù)組:
實(shí)例
x = myObj.sites[0];
2.循環(huán)數(shù)組
你可以使用 for-in 來(lái)訪問(wèn)數(shù)組:
實(shí)例
for(iinmyObj.sites){
x += myObj.sites[i] + “<br>“;
}
你也可以使用 for 循環(huán):
實(shí)例
for(i = 0; i < myObj.sites.length; i++){
x += myObj.sites[i] + “<br>“;
}
3.嵌套 JSON 對(duì)象中的數(shù)組
JSON 對(duì)象中數(shù)組可以包含另外一個(gè)數(shù)組,或者另外一個(gè) JSON 對(duì)象:
實(shí)例
myObj = {
“name“:“網(wǎng)站“,
“num“:3,
“sites“: [
{
“name“:“Google“,
“info“:[“Android“, “Google 搜索“, “Google 翻譯“]
},
{
“name“:“Taobao“,
“info“:[“淘寶“, “網(wǎng)購(gòu)“]
}]
}
我們可以使用for-in 來(lái)循環(huán)訪問(wèn)每個(gè)數(shù)組:
實(shí)例
for(iinmyObj.sites){
x += “<h1>“ + myObj.sites[i].name + “</h1>“;
for(jinmyObj.sites[i].info){
x += myObj.sites[i].info[j] + “<br>“;
}
}
4.修改數(shù)組值
你可以使用索引值來(lái)修改數(shù)組值:
實(shí)例
myObj.sites[1] = “Github“;
5.刪除數(shù)組元素
我們可以使用delete關(guān)鍵字來(lái)刪除數(shù)組元素:
實(shí)例
deletemyObj.sites[1];
十一、JSON 布爾值
JSON 布爾值可以是 true 或者 false:
{
“flag“:true}
十二、JSON null
JSON 可以設(shè)置 null 值:
{
“name“:null}
十三、JSON 使用 JavaScript 語(yǔ)法
因?yàn)?JSON 使用 JavaScript 語(yǔ)法,所以無(wú)需額外的軟件就能處理 JavaScript 中的 JSON。
通過(guò) JavaScript,您可以創(chuàng)建一個(gè)對(duì)象數(shù)組,并像這樣進(jìn)行賦值:
實(shí)例
varsites = [
{
“name“:“google“ , “url“:“www.google.com“},
{
“name“:“微博“ , “url“:“www.weibo.com“}
];
可以像這樣訪問(wèn)JavaScript 對(duì)象數(shù)組中的第一項(xiàng)(索引從 0 開(kāi)始):
sites[0].name;
返回的內(nèi)容是:
runoob
可以像這樣修改數(shù)據(jù):
sites[0].name=“菜鳥(niǎo)教程“;
十四、JSON 文件
·JSON 文件的文件類型是 “.json”
·JSON 文本的 MIME 類型是 “application/json”
http://www.runoob.com/json/json-parse.html
http://www.runoob.com/json/json-stringify.html
http://www.runoob.com/json/json-eval.html
總結(jié)
以上是生活随笔為你收集整理的JSON教程[通俗易懂](w3cschool)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 适合发朋友圈的旅行文字短句29句
- 下一篇: 蚓无爪牙之利筋骨之强上食埃土下饮黄泉用心