JSON基礎(chǔ)介紹與詳細(xì)用法
一、什么是JSON
- 1、JSON指的是JavaScript對(duì)象表示法(JavaScript Object Notation)。
- 2、JSON是輕量級(jí)的文本數(shù)據(jù)交換格式,比XML更小、更快、更易解析。
- 3、JSON獨(dú)立于語言。
- 4、JSON具有自我描述性、更易理解。
注意:JSON使用JavaScript語法來描述數(shù)據(jù)對(duì)象,但是JSON仍然獨(dú)立于語言和平臺(tái)。JSON解析器和JSON庫支持許多不同的編程語言。目前非常多的動(dòng)態(tài)編程語言(PHP、.NET)都支持JSON。
二、JSON和XML比較
1、與XML相同之處
- 1)JSON是純文本。
- 2)JSON具有“自我描述性”(人類可讀)。
- 3)JSON具有層級(jí)結(jié)構(gòu)(值中存在值)。
- 4)JSON可通過JavaScript進(jìn)行解析。
- 5)JSON數(shù)據(jù)可使用AJAX進(jìn)行傳輸。
2、與XML不同之處
- 1)沒有結(jié)束標(biāo)簽。
- 2)比XML更短。
- 3)比XML讀寫的速度更快。
- 4)能夠使用內(nèi)建的JavaScript eval()方法進(jìn)行解析。
- 5)可以使用數(shù)組。
- 6)不使用保留字。
3、為什么使用JSON
對(duì)于AJAX應(yīng)用程序來說,JSON比XML更快更易使用:
使用XML:
- 讀取XML文檔。
- 使用XML DOM來循環(huán)遍歷文檔。
- 讀取值并存儲(chǔ)在變量中。
使用JSON
- 讀取JSON字符串。
- 用eval()處理JSON字符串。
三、JSON語法
JSON語法是JavaScript語法的子集。
1、語法規(guī)則
JSON語法是JavaScript對(duì)象表示語法的子集。
- 1)數(shù)據(jù)在名稱/值對(duì)中。
- 2)數(shù)據(jù)由逗號(hào)分隔。
- 3)大括號(hào)保存對(duì)象。
- 4)中括號(hào)保存數(shù)組。
2、JSON名稱/值對(duì)
JSON數(shù)據(jù)的書寫格式是:名稱/值對(duì)。
名稱/值對(duì)包括字段名稱(在雙引號(hào)中),后面寫一個(gè)冒號(hào),然后是值:
"name":"Tom"
3、JSON值
JSON值可以是:
- 1)數(shù)字(整數(shù)或浮點(diǎn)數(shù))。
- 2)字符串(在雙引號(hào)中)。
- 3)邏輯值(true或false)。
- 4)數(shù)組(在中括號(hào)中)。
- 5)對(duì)象(在大括號(hào)中)。
- 6)null。
4、JSON數(shù)字
JSON數(shù)字可以是整型或者浮點(diǎn)型:
{"age":30}
5、JSON對(duì)象
JSON對(duì)象在大括號(hào)({})中書寫:
對(duì)象可以包含多個(gè)名稱/值對(duì):
{"name":"張三","age":24}
6、JSON數(shù)組
JSON數(shù)組在中括號(hào)中書寫:
數(shù)組可以包含多個(gè)對(duì)象:
{ ? "student":[ ? {"name":"張三","age":24}, ? {"name":"李四","age":25} ? ] }
在上面的例子中,對(duì)象"student"是包含三個(gè)對(duì)象的數(shù)組。每個(gè)對(duì)象代表一條關(guān)于某個(gè)學(xué)生(name,age)的記錄。
7、JSON布爾值
JSON布爾值可以是true或者false:
{"flag":true}
8、JSON null值
JSON可以設(shè)置null值:
{"student":null}
9、JSON使用JavaScript語法
因?yàn)镴SON使用JavaScript語法,所以無需額外的軟件就能處理JavaScript中的JSON。
通過JavaScript,你可以創(chuàng)建一個(gè)對(duì)象數(shù)組,并像這樣進(jìn)行賦值:
var student=[ ? {"name":"張三","age":24}, ? {"name":"李四","age":25} ? ];
可以像這樣訪問JavaScript對(duì)象數(shù)組中的第一項(xiàng)(索引從0開始)
student[0].name;
返回的內(nèi)容是:張三
可以像這樣修改數(shù)據(jù):
student[0].name="tom";
10、JSON文件
- 1)JSON文件的文件類型是".json"。
- 2)JSON文本的MIME類型是"application/json"。
四、JSON對(duì)象
1、對(duì)象語法
{"name":"張三","age":25}
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、訪問對(duì)象
你可以使用點(diǎn)(.)來訪問對(duì)象的值。
var ?myObj,x; myObj={"name":"張三","age":24}; x=myObj.name;
上面的例子輸出值:張三。
你也可以使用中括號(hào)([])來訪問對(duì)象的值。
var ?myObj,x; myObj={"name":"張三","age":24}; x=myObj["name"];
上面的例子同樣輸出值:張三。
3、循環(huán)對(duì)象
你可以使用for-in來循環(huán)對(duì)象的屬性,使用中括號(hào)([])來訪問屬性的值:
var myObj={"name":"張三","age":24}; for(x in myObj){ ? ? ?document.getElementById("demo").innerHTML += myObj[x]+"<br>"; }
4、嵌套JSON對(duì)象
JSON對(duì)象中可以包含另外一個(gè)JSON對(duì)象:
student={ ? ? ? "name":"張三", ? ? ? "age":24, ? ? ? "score":{ ? ? ? ? ?"C#高級(jí)編程":94, ? ? ? ? ?"SQL Server":83, ? ? ? ? ?"Python":75 ? ? ? ?} }
你可以使用點(diǎn)號(hào)(.)或者中括號(hào)([])來訪問嵌套的JSON對(duì)象。
例如:
var x=student.score.C#高級(jí)編程; // 或者 var x=student.score["C#高級(jí)編程"];
5、修改JSON對(duì)象的值
你可以使用點(diǎn)號(hào)(.)來修改JSON對(duì)象的值:
student.score.C#高級(jí)編程=90;
你也可以使用中括號(hào)([])來修改JSON對(duì)象的值:
student.score["C#高級(jí)編程"]=90;
6、刪除JSON對(duì)象的屬性
我們可以使用delete關(guān)鍵字來刪除JSON對(duì)象的屬性:
delete student.score.C#高級(jí)編程;
也可以使用中括號(hào)([])來刪除JSON對(duì)象的屬性:
delete student.score["C#高級(jí)編程"];
五、JSON數(shù)組
1、數(shù)組作為JSON對(duì)象
["C#","Java","Python"]
JSON數(shù)組在中括號(hào)中書寫。
JSON中數(shù)組值必須是合法的JSON數(shù)據(jù)類型(數(shù)字、字符串、對(duì)象、數(shù)組、布爾值或null)。
JavaScript中,數(shù)組值可以是以上的JSON數(shù)據(jù)類型,也可以是JavaScript的表達(dá)式,包括函數(shù)、日期、及undefined。
2、JSON對(duì)象中的數(shù)組
對(duì)象屬性的值可以是一個(gè)數(shù)組:
var student={ ? ?"name":"張三", ? ?"age":24, ? ?"subject":[".NET","java","python"] }
可以使用索引值來訪問數(shù)組:
var x=student.subject[0];
3、循環(huán)數(shù)組
可以使用for-in來訪問數(shù)組:
for(i ?in student.subject) ?{ ? ? ?x += student.subject[i]+"<br>"; }
也可以使用for循環(huán)
for(int i=0;i<student.subject.length;i++) { ? ?x+=student.subject[i]+"<br>"; }
4、嵌套JSON對(duì)象中的數(shù)組
JSON對(duì)象中數(shù)組可以包含另外一個(gè)數(shù)組,或者另外一個(gè)JSON對(duì)象:
student={ ? ?"name":"張三", ? ?"age":24, ? ?"score":[ ? ? ? ? ?{".NET":91}, ? ? ? ? ?{"java":85}, ? ? ? ? ?{"python":79} ? ? ] }
可以使用for-in來循環(huán)訪問數(shù)組
for(i in student.score) { ? ?x +="<h1>" +student.score[i]+"</h1>"; }
5、修改數(shù)組值
可以使用索引值來修改數(shù)組值:
student.score[1]=93;
6、刪除數(shù)組元素
可以使用delete關(guān)鍵字來刪除數(shù)組元素:
delete student.score[0];
到此這篇關(guān)于JSON基礎(chǔ)介紹與詳細(xì)用法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript定義變量時(shí)有var和沒有var的區(qū)別探討
定義變量時(shí)省略var是不安全的,不過是合法的。定義的變量的作用域取決于定義的位置2014-07-07javascript學(xué)習(xí)筆記(七) js函數(shù)介紹
javascript學(xué)習(xí)筆記之js函數(shù)介紹,需要的朋友可以參考下2012-06-06JavaScript中指定函數(shù)名稱的相關(guān)方法
這篇文章主要介紹了JavaScript中指定函數(shù)名稱的相關(guān)方法,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06