學習JSON

忘塵天外天發表於2017-09-03

  JSON:JavaScript  Object  Notation,輕量級的文字資料交換格式 。是儲存和交換文字資訊的語法。類似XML。但  JSON比XML更小、更快,更易解析。JSON使用JavaScript語法來描述資料物件,但JSON仍然獨立於語言和平臺。JSON解析器和JSON庫支援許多不同的程式語言。非常多的動態(PHP,JSP, .NET)程式語言都支援JSON。JSON文字格式在語法建立上與建立JavaScript物件的程式碼相同。由於這種相似性,無需解析器,JavaScript程式能夠適應內建的eval()函式,用JSON資料來生成原生的JavaScript物件。下面是一個JSON物件。

    {"sites",[{"name":"菜鳥教程","url":"www.runoob.com"},
                 {"name":"百度","url":"www.baidu.com"},
                 {"name":"微博","url":"www.weibo.com"}
               ]}        

   JSON與XML相同之處

  • JSON是純文字
  • JSON具有"自我描述性"(可讀)
  • JSON具有層級結構
  • JSON可通過JavaScript進行解析
  • JSON資料可使用AJAX進行傳輸

  JSON與XML不同之處

  • 沒有結束標籤
  • 結構更短
  • 讀寫的速度更快
  • 能夠使用內建的JavaScript  eval()方法進行解析
  • 使用陣列
  • 不使用保留字

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

  使用XML:

  •   讀取XML文件
  • 使用XML  DOM 來迴圈遍歷文件
  • 讀取值並儲存在變數中

  使用JSON

  •   讀取JSON字串
  • 用eval()處理JSON字串

JSON語法規則

    JSON語法是JavaScript物件表示語法的子集。

  • 資料在名稱/值對中
  • 資料由逗號分隔
  • 大括號儲存物件
  • 中括號儲存陣列

  JSON值可以是:

  • 數字(整數或浮點數)
  • 字串(在雙引號中)
  • 邏輯值(true或false)
  • 陣列(在中括號中),陣列可包含多個物件,索引從0開始
  • 物件(在大括號中),可以包含多個名稱/值對
  • null

  JSON檔案的檔案型別是".json",文字的MIME型別是"application/json"。

  JSON物件

    {"name":"菜鳥","alexa":10000,"site":null}

   JSON物件在大括號{}中書寫,物件可以包含多個key/value(鍵/值)對。key必須是字串,value可以是合法的JSON資料型別(字串、數字、物件、陣列、布林值或null)。key和value使用冒號(:)分隔。每個key/value對使用逗號(,)分隔。建立JSON物件後就可以使用物件名+點號(.)來獲取物件的值。也可以使用中括號[]來獲取物件的值。

var   jsonobj , x ;
jsonobj = {"name":"菜鳥","alexa":10000,"site":null};
x = jsonobj.name ; // x = jsonobj["name"] 也能獲得相同的結果

   可以用for-in來迴圈物件的屬性:

    
        var  jsonobj = {"name":"菜鳥","alexa":10000,"site":null};
    for( x  in  jsonobj ){
                 document.getElementById("demo").innerHTML += x +"<br>"  ;
       }    
      //迴圈物件屬性時,使用中括號來訪問屬性的值
     
      for(  y  in  jsonobj  ){
               document.getElementById("demo").innerHTML += jsonobj[y]  + "<br>"  ;
         } 

    JSON物件可以是另一個JSON物件的某個屬性的值,這就是巢狀JSON。修改JSON物件的值使用點號來操作。刪除JSON物件的屬性可以使用delete關鍵字。

相關文章