1、JSON: JavaScript Object Notation (JavaScript 對象表示法)。html
JSON是存儲和交換文本信息的語法。ajax
JSON獨立於語言*json
1 { 2 「sites」:[ 3 {'name':'菜鳥教程' , 'url':'www.runoob.com'}, 4 ] 5 }
JSON轉換爲 JavaScript 對象:數組
JSON 文本格式在語法上與建立 JavaScript 對象的代碼相同。服務器
因爲這種類似性,無需解析器,JavaScript 程序可以使用內建的 eval() 函數,用 JSON 數據來生成原生的 JavaScript 對象。函數
使用JSON:this
讀取JSON字符串;google
用eval()處理JSON字符串。url
2、JSON語法spa
JSON語法是JavaScript語法的子集。
語法規則:
數據在鍵值對中
數據由逗號隔開
大括號保存對象
中括號保存數組
JSON值:
數字、字符串、布爾值、數組、對象、null
3、JSON對象
{ "name":"runoob", "alexa":10000, "site":null }
訪問對象值:
var myObj, x; myObj = { "name":"runoob", "alexa":10000, "site":null }; x = myObj.name;
或
x = myObj["name"];
循環對象:
1 var myObj = { "name":"runoob", "alexa":10000, "site":null }; 2 for (x in myObj) { 3 document.getElementById("demo").innerHTML += x + "<br>"; 4 }
嵌套JSON對象:[JSON對象中能夠嵌套JSON對象]
1 myObj = { 2 "name":"runoob", 3 "alexa":10000, 4 "sites": { 5 "site1":"www.runoob.com", 6 "site2":"m.runoob.com", 7 "site3":"c.runoob.com" 8 } 9 } 10 11 //訪問 12 x = myObj.sites.site1; 13 // 或者 14 x = myObj.sites["site1"];
修改JSON對象:
1 myObj.sites.site1 = "www.google.com"; 2 或 3 myObj.sites["site1"] = "www.google.com";
刪除JSON對象:
1 delete myObj.sites.site1; 2 或 3 delete myObj.sites["site1"]
4、數組類同
5、JSON.parse()
JSON與服務器交換數據,接受的通常是字符串。可使用JSON.parse()將數據轉換爲JavaScript對象。
JSON.parse(text);
<p id="demo"></p> <script> var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }'); document.getElementById("demo").innerHTML = obj.name + ":" + obj.site; </script>
從服務器端接受JSON:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj.name; } }; xmlhttp.open("GET", "/try/ajax/json_demo.txt", true); xmlhttp.send();
從服務器端接受數組JSON:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myArr = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myArr[1]; } }; xmlhttp.open("GET", "/try/ajax/json_demo_array.txt", true); xmlhttp.send();
JSON 不能存儲 Date 對象。
若是你須要存儲 Date 對象,須要將其轉換爲字符串。
以後再將字符串轉換爲 Date 對象。
var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}'; var obj = JSON.parse(text); obj.initDate = new Date(obj.initDate); document.getElementById("demo").innerHTML = obj.name + "建立日期: " + obj.initDate;
JSON 不容許包含函數,但你能夠將函數做爲字符串存儲,以後再將字符串轉換爲函數。
var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}'; var obj = JSON.parse(text); obj.alexa = eval("(" + obj.alexa + ")"); document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();
6、JSON.stringify [將JavaScript對象轉化爲JSON字符串]
JSON.stringify(value[, replacer[, space]])
因爲 JSON 語法是 JavaScript 語法的子集,JavaScript 函數 eval() 可用於將 JSON 文本轉換爲 JavaScript 對象。
var obj = eval ("(" + txt + ")");