JavaScript語言中的json(JavaScript Object Notation)用于在網絡傳輸或儲存時,以一種輕量級的、易解析的數據格式來表示復雜的數據類型,如數組和對象。JSON的格式是由一組用逗號分隔的鍵值對構成,使用花括號括住對象{},使用中括號括住數組[]。JSON是一種相對于XML更加簡潔和易解析的數據交換格式。下面我們來介紹一下使用JavaScript中JSON的一些用法。
JSON的數據類型包括字符串、數字、布爾值、數組、對象和null。以一個簡單的JSON示例來說明:
{ "name": "Tom", "age": 18, "gender": true, "hobbies": ["reading", "music", "swimming"], "scores": { "math": 90, "english": 80 }, "isLeader": null }
在JavaScript中,可以使用JSON對象提供的兩個方法,即JSON.parse()和JSON.stringify()將JSON格式的數據轉換成JavaScript對象或者將JavaScript對象轉換成JSON格式的數據。
JSON.parse()方法可以將JSON格式的字符串轉換成JavaScript對象
var jsonStr = '{"name": "Tom", "age": 18, "gender": true}'; var obj = JSON.parse(jsonStr); console.log(obj.name); // 輸出Tom var jsonArrStr = '["reading", "music", "swimming"]'; var arr = JSON.parse(jsonArrStr); console.log(arr[1]); // 輸出music
JSON.stringify()方法可以將JavaScript對象轉換成JSON格式的字符串
var obj = { "name": "Tom", "age": 18, "gender": true }; var jsonStr = JSON.stringify(obj); console.log(jsonStr); // 輸出{"name":"Tom","age":18,"gender":true} var arr = ["reading", "music", "swimming"]; var jsonArrStr = JSON.stringify(arr); console.log(jsonArrStr); // 輸出["reading","music","swimming"]
JSON還可以用于跨域訪問數據。例如,我們可以通過JSONP獲取百度的搜索結果:
function getBaiduSearchResult(keyword) { var script = document.createElement('script'); script.src = 'https://www.baidu.com/su?wd=' + keyword + '&cb=handleBaiduSearchResult'; document.body.appendChild(script); } function handleBaiduSearchResult(data) { console.log(data); } getBaiduSearchResult('JavaScript');
以上代碼通過動態創建script標簽,設置src屬性為百度搜索接口的地址,并在URL中加入回調函數名handleBaiduSearchResult。當script標簽加載完成時,會調用該函數,并傳入返回的搜索結果數據。由于腳本的src屬性來自不同的域,屬于跨域請求,但是百度通過JSONP提供了該接口,可在服務器端完成請求,將數據封裝到回調函數中返回給客戶端。
總之,JSON在JavaScript中的應用廣泛,可以用于數據的傳輸和儲存,也可以用于跨域請求數據。上述只是簡單介紹了JSON的一些用法,讀者可以深入學習JSON相關知識,擴展自己的應用。