JavaScript語言中的json(JavaScript Object Notation)用于在網(wǎng)絡(luò)傳輸或儲存時,以一種輕量級的、易解析的數(shù)據(jù)格式來表示復(fù)雜的數(shù)據(jù)類型,如數(shù)組和對象。JSON的格式是由一組用逗號分隔的鍵值對構(gòu)成,使用花括號括住對象{},使用中括號括住數(shù)組[]。JSON是一種相對于XML更加簡潔和易解析的數(shù)據(jù)交換格式。下面我們來介紹一下使用JavaScript中JSON的一些用法。
JSON的數(shù)據(jù)類型包括字符串、數(shù)字、布爾值、數(shù)組、對象和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格式的數(shù)據(jù)轉(zhuǎn)換成JavaScript對象或者將JavaScript對象轉(zhuǎn)換成JSON格式的數(shù)據(jù)。
JSON.parse()方法可以將JSON格式的字符串轉(zhuǎn)換成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對象轉(zhuǎn)換成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還可以用于跨域訪問數(shù)據(jù)。例如,我們可以通過JSONP獲取百度的搜索結(jié)果:
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');
以上代碼通過動態(tài)創(chuàng)建script標(biāo)簽,設(shè)置src屬性為百度搜索接口的地址,并在URL中加入回調(diào)函數(shù)名handleBaiduSearchResult。當(dāng)script標(biāo)簽加載完成時,會調(diào)用該函數(shù),并傳入返回的搜索結(jié)果數(shù)據(jù)。由于腳本的src屬性來自不同的域,屬于跨域請求,但是百度通過JSONP提供了該接口,可在服務(wù)器端完成請求,將數(shù)據(jù)封裝到回調(diào)函數(shù)中返回給客戶端。
總之,JSON在JavaScript中的應(yīng)用廣泛,可以用于數(shù)據(jù)的傳輸和儲存,也可以用于跨域請求數(shù)據(jù)。上述只是簡單介紹了JSON的一些用法,讀者可以深入學(xué)習(xí)JSON相關(guān)知識,擴展自己的應(yīng)用。