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