JSON教程


一、什么是JSON

1、JSON指的是JavaScript對象表示法(JavaScript Object Notation)。

2、JSON是輕量級的文本數據交換格式,比XML更小、更快、更易解析。

3、JSON獨立於語言。

4、JSON具有自我描述性、更易理解。

注意:JSON使用JavaScript語法來描述數據對象,但是JSON仍然獨立於語言和平台。JSON解析器和JSON庫支持許多不同的編程語言。目前非常多的動態編程語言(PHP、.NET)都支持JSON。

二、JSON和XML比較

1、與XML相同之處

1)JSON是純文本。

2)JSON具有“自我描述性”(人類可讀)。

3)JSON具有層級結構(值中存在值)。

4)JSON可通過JavaScript進行解析。

5)JSON數據可使用AJAX進行傳輸。

2、與XML不同之處

1)沒有結束標簽。

2)比XML更短。

3)比XML讀寫的速度更快。

4)能夠使用內建的JavaScript eval()方法進行解析。

5)可以使用數組。

6)不使用保留字。

3、為什么使用JSON

對於AJAX應用程序來說,JSON比XML更快更易使用:

使用XML:

讀取XML文檔。

使用XML DOM來循環遍歷文檔。

讀取值並存儲在變量中。

使用JSON

讀取JSON字符串。

用eval()處理JSON字符串。

三、JSON語法

JSON語法是JavaScript語法的子集。

1、語法規則

JSON語法是JavaScript對象表示語法的子集。

1)數據在名稱/值對中。

2)數據由逗號分隔。

3)大括號保存對象。

4)中括號保存數組。

2、JSON名稱/值對

JSON數據的書寫格式是:名稱/值對。

名稱/值對包括字段名稱(在雙引號中),后面寫一個冒號,然后是值:

"name":"Tom"

3、JSON值

JSON值可以是:

1)數字(整數或浮點數)。

2)字符串(在雙引號中)。

3)邏輯值(true或false)。

4)數組(在中括號中)。

5)對象(在大括號中)。

6)null。

4、JSON數字

JSON數字可以是整型或者浮點型:

{"age":30}

5、JSON對象

JSON對象在大括號({})中書寫:

對象可以包含多個名稱/值對:

{"name":"張三","age":24}

6、JSON數組

JSON數組在中括號中書寫:

數組可以包含多個對象:

{
  "student":[
  {"name":"張三","age":24},
  {"name":"李四","age":25}
  ]
}

在上面的例子中,對象"student"是包含三個對象的數組。每個對象代表一條關於某個學生(name,age)的記錄。

7、JSON布爾值

JSON布爾值可以是true或者false:

{"flag":true}

8、JSON null值

JSON可以設置null值:

{"student":null}

9、JSON使用JavaScript語法

因為JSON使用JavaScript語法,所以無需額外的軟件就能處理JavaScript中的JSON。

通過JavaScript,你可以創建一個對象數組,並像這樣進行賦值:

var student=[
  {"name":"張三","age":24},
  {"name":"李四","age":25}
  ];

可以像這樣訪問JavaScript對象數組中的第一項(索引從0開始)

student[0].name;

返回的內容是:

張三

可以像這樣修改數據:

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數據類型(字符串、數字、對象、數組、布爾值或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、循環對象

你可以使用for-in來循環對象的屬性,使用中括號([])來訪問屬性的值:

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關鍵字來刪除JSON對象的屬性:

delete student.score.C#高級編程;

也可以使用中括號([])來刪除JSON對象的屬性:

delete student.score["C#高級編程"];

五、JSON數組

1、數組作為JSON對象

["C#","Java","Python"]

JSON數組在中括號中書寫。

JSON中數組值必須是合法的JSON數據類型(數字、字符串、對象、數組、布爾值或null)。

JavaScript中,數組值可以是以上的JSON數據類型,也可以是JavaScript的表達式,包括函數、日期、及undefined。

2、JSON對象中的數組

對象屬性的值可以是一個數組:

var student={
   "name":"張三",
   "age":24,
   "subject":[".NET","java","python"]
}

可以使用索引值來訪問數組:

var x=student.subject[0];

3、循環數組

可以使用for-in來訪問數組:

for(i  in student.subject)  {
     x += student.subject[i]+"<br>";
}

也可以使用for循環

for(int i=0;i<student.subject.length;i++) {
   x+=student.subject[i]+"<br>";
}

4、嵌套JSON對象中的數組

JSON對象中數組可以包含另外一個數組,或者另外一個JSON對象:

student={
   "name":"張三",
   "age":24,
   "score":[
         {".NET":91},
         {"java":85},
         {"python":79}
    ]
}

可以使用for-in來循環訪問數組

for(i in student.score) {
   x +="<h1>" +student.score[i]+"</h1>";
}

5、修改數組值

可以使用索引值來修改數組值:

student.score[1]=93;

6、刪除數組元素

可以使用delete關鍵字來刪除數組元素:

delete  student.score[0];

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM