JSON定義
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。簡單地說,JSON 能夠將 JavaScript 對象中表示的一組數據轉換爲字符串,而後就能夠在函數之間輕鬆地傳遞這個字符串,或者在異步應用程序中將字符串從 Web 客戶機傳遞給服務器端程序。這個字符串看起來有點兒古怪,可是JavaScript很容易解釋它,並且 JSON 能夠表示比"名稱 / 值對"更復雜的結構。html
JSON 語法是 JavaScript 對象表示法語法的子集。
數據在名稱/值對中、數據由逗號分隔、花括號保存對象、方括號保存數組
JSON 值能夠是:數字(整數或浮點數)、字符串(在雙引號中)、邏輯值(true 或 false)、數組(在方括號中)、對象(在花括號中)、null
例如:json
{ "name":"小強", "age":16, "msg":["a","b"], "regex": "^http://.*" };
JSON.parse是將json格式的字符串轉換成json對象。數組
var str ='{"name":"小強","age":16,"msg":["a","b"],"regex": "^http://.*"}'; var json = JSON.parse(str); console.log("name:" + json.name); console.log("msgLen:" + json.msg.length); // 結果 // name:小強 // msgLen:2
備註:單引號寫在{}外,每一個屬性名都必須用雙引號。瀏覽器
JSON.stringify是將json對象轉換成json格式的字符串。服務器
var json = {"name":"小強","age":16,"msg":["a","b"],"regex": "^http://.*"}; var str = JSON.stringify(json); console.log("json:" + str); console.log("jsonLen:" + str.length); // 結果 // json:{"name":"小強","age":16,"msg":["a","b"],"regex":"^http://.*"} // jsonLen:60
備註:JSON.parse和JSON.stringify支持IE8及其以上版本
將JSON轉換成數組異步
function jsonToArray(obj){ var r = {key:[],value:[]}; for(var k in obj){ if(!obj.hasOwnProperty(k)){ continue; } r.key.push(k); r.value.push(obj[k]); } return r; } var json = {"name":"小強","age":16,"msg":["a","b"],"regex": "^http://.*"}; var arrJson = jsonToArray(json); console.log("regexKEY:" + arrJson.key[3]); console.log("regexVALUE:" + arrJson.value[3]); console.log("KEYLen:" + arrJson.key.length); // 結果 // regexKEY: regex // regexVALUE: ^http://.* // KEYLen:4
關於IE低版本能夠使用插件
json官網:http://www.json.org/json-zh.html
題外話:IE低版本的瀏覽器使用率愈來愈少,建議兼容IE低本的腳本單獨提出來,將兼容性代碼抽離出來。用IE註釋來判斷是否引入js插件,js插件最好與標準名稱一致,如低版本中引入JSON這個變量,也有個方法JSON.parse等等。能夠改善之前的兼容性代碼處理方式,將IE那部分的都轉成W3C標準事件處理函數,單獨爲IE引入。我的看法。
參考文檔:
一、JSON百度百科
二、JSON使用(w3school)
函數