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