JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級資料交換格式。XML也是一種資料交換格式,為什麼沒有選擇XML呢?因為XML雖然可以作為跨平台的資料交換格式,但是在JS(JavaScript的簡寫)中處理XML非常不友善,同時XML标記比資料多,增加了交換産生的流量,而JSON沒有附加的任何标記,在JS中可作為對象處理,是以我們更傾向于選擇JSON來交換資料。
JSON 文法是 JavaScript 文法的子集。
JSON 文法是 JavaScript 對象表示法文法的子集。
資料在名稱/值對中
資料由逗号分隔
花括号儲存對象
方括号儲存數組
JSON 資料的書寫格式是:名稱/值對。
名稱/值對包括字段名稱(在雙引号中),後面寫一個冒号,然後是值
JSON 值可以是:
數字(整數或浮點數)
字元串(在雙引号中)
邏輯值(true 或 false)
數組(在方括号中)
對象(在花括号中)
null
JSON 對象在花括号中書寫:
對象可以包含多個名稱/值對:
JSON 數組在方括号中書寫:
數組可包含多個對象:
在上面的例子中,對象 "employees" 是包含三個對象的數組。每個對象代表一條關于某人(有姓和名)的記錄。
因為 JSON 使用 JavaScript 文法,是以無需額外的軟體就能處理 JavaScript 中的 JSON。
通過 JavaScript,您可以建立一個對象數組,并像這樣進行指派:
可以像這樣通路 JavaScript 對象數組中的第一項:
傳回的内容是:
JSON是JS的一個子集,是以可以在JS中輕松地讀,寫JSON。讀和寫JSON都有兩種方法,分别是利用”.”操作符和“[key]”的方式。
我們首先定義一個JSON對象,代碼如下。
var obj = { 1: "value1", "2": "value2",
1,從JSON中讀資料
2,向JSON中寫資料
比如要往JSON中增加一條資料,代碼如下:
增加資料後的JSON對象如圖:

3,修改JSON中的資料
我們現在要修改JSON中count的值,代碼如下:
修改後的JSON如圖。
4,删除JSON中的資料
我們現在實作從JSON中删除count這條資料,代碼如下:
删除後的JSON如圖
可以看到count已經從JSON對象中被删除了。
5,周遊JSON對象
可以使用for…in…循環來周遊JSON對象中的資料,比如我們要周遊輸出obj對象的值,代碼如下:
程式輸出結果為:
解析和序列化
如果是載入的 JSON 檔案,我們需要對其進行使用,那麼就必須對 JSON 字元串解析成原生的 JavaScript 值。當然,如果是原生的 JavaScript 對象或數組,也可以轉換成 JSON 字 符串。對于講 JSON 字元串解析為 JavaScript 原生值,早期采用的是 eval()函數。但這種方法 既不安全,可能會執行一些惡意代碼。
var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]';
alert(box); //JSON 字元串
var json = eval(box); //使用 eval()函數解析
alert(json); //得到 JavaScript 原生值
ECMAScript5 對解析 JSON 的行為進行規範,定義了全局對象 JSON。支援這個對象的 浏覽器有 IE8+、Firefox3.5+、Safari4+、Chrome 和 Opera10.5+。不支援的浏覽器也可以通過 一個開源庫 json.js 來模拟執行。JSON 對象提供了兩個方法,一個是将原生 JavaScript 值轉 換為 JSON 字元串:stringify();另一個是将 JSON 字元串轉換為 JavaScript 原生值:parse()。
本文轉自 風雨蕭條 部落格,原文連結: http://blog.51cto.com/1095221645/1883512 如需轉載請自行聯系原作者
<a href="http://blog.51cto.com/search/result?q=json" target="_blank">json</a>