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關鍵字。