JavaScript和JSON(JavaScript Object Notation)是緊密相關(guān)的兩個(gè)概念。JSON作為一種數(shù)據(jù)格式使用廣泛,而JavaScript則作為一種腳本語(yǔ)言,可以操作JSON數(shù)據(jù)。下面就來(lái)介紹一下JavaScript與JSON的關(guān)系。
首先,JSON是一種數(shù)據(jù)格式,它由鍵值對(duì)構(gòu)成,其中鍵必須為字符串,值可以是字符串、數(shù)字、布爾值、數(shù)組、對(duì)象或null。例如:
{ "name": "張三", "age": 18, "isMale": true, "hobbies": ["reading", "swimming"], "address": { "city": "北京", "street": "朝陽(yáng)路" }, "phone": null }
而JavaScript可以對(duì)JSON數(shù)據(jù)進(jìn)行解析、序列化、增刪改查等操作。以下是一些簡(jiǎn)單的示例:
// 解析JSON字符串并轉(zhuǎn)為JavaScript對(duì)象 var jsonStr = '{"name": "張三", "age": 18}'; var jsonObj = JSON.parse(jsonStr); console.log(jsonObj.name); // 輸出"張三" // 將JavaScript對(duì)象轉(zhuǎn)為JSON字符串 var obj = {name: "李四", age: 20}; var jsonStr = JSON.stringify(obj); console.log(jsonStr); // 輸出'{"name":"李四","age":20}' // 增加一個(gè)新的鍵值對(duì) jsonObj.isMale = false; console.log(JSON.stringify(jsonObj)); // 輸出'{"name":"張三","age":18,"isMale":false}' // 刪除一個(gè)鍵值對(duì) delete jsonObj.age; console.log(JSON.stringify(jsonObj)); // 輸出'{"name":"張三","isMale":false}' // 查找一個(gè)值 console.log(jsonObj.hobbies[0]); // 輸出"reading"
另外,在實(shí)際應(yīng)用中,常常需要用到Ajax技術(shù)從服務(wù)器獲取JSON數(shù)據(jù),并在前端頁(yè)面上展示。以下是一個(gè)簡(jiǎn)單的實(shí)例:
// 加載JSON數(shù)據(jù)并渲染到頁(yè)面 function loadJson() { var request = new XMLHttpRequest(); request.open("GET", "data.json", true); request.onreadystatechange = function() { if (request.readyState == 4 && request.status == 200) { var jsonStr = request.responseText; var jsonObj = JSON.parse(jsonStr); renderData(jsonObj); } }; request.send(); } // 渲染數(shù)據(jù)到頁(yè)面 function renderData(data) { var ul = document.createElement("ul"); for (var i = 0; i < data.length; i++) { var li = document.createElement("li"); li.innerText = data[i].name + "," + data[i].age; ul.appendChild(li); } document.body.appendChild(ul); } loadJson();
以上只是簡(jiǎn)單的示例,實(shí)際應(yīng)用中還有許多細(xì)節(jié)需要處理。總之,JavaScript與JSON是密不可分的,學(xué)好JavaScript也必須學(xué)好JSON。