JavaScript Object Notation (JSON)在網站開發的世界裡已經有很多人採用,成為不可或缺的一部份。Firefox 3.5 起以 window.JSON 來原生支援 JSON 格式,本篇 (原文) 將為各位做個相關介紹。
JavaScript 等腳本語言的標準原型 ECMAScript 在第五版時將 JSON 原生支援列入規格,目前 Firefox 3.5 跟 IE8 都支援,而且其他瀏覽器必定也會很快加入支援行列。JSON 原生支援有兩個優點:
- 安全性提升:單純使用 eval 來解析字串型態陳述式的方法有其安全顧慮,原生 JSON 目前單純解析資料、不呼叫函式來解析物件。
- 效能提升:這是應該的… 目前其他可以安全解析 JSON 的函式庫,效能都比不上原生支援的瀏覽器。
來看些範例 —— 一個以 HTTP GET 等方法傳回的簡單 JSON API 搜尋結果看起來大概像這樣:
/*
從主機取回一段搜尋結果的 JSON 資料
*/
var data = ' { "responseData":
{"results": [
{
"SafeSearch":"true",
"url":"http://www.arunranga.com/i.jpg",
},
{
"SafeSearch":"false",
"url":"http://www.badarunranga.com/evil.jpg",
}
]}}';
您可以用這樣的方式處理資料:
/*
取回、操作上一段的 JSON 資料
如果用支援原生 JSON 的其他函式庫,會更容易一些
*/
if (window.JSON) {
var searchObj = JSON.parse(data);
for (var i=0; i++; i < searchObj.responseData.results.length) {
if (searchObj.responseData.results[i].SafeSearch) {
var img = new Image();
img.src = searchObj.responseData.results[i].url;
// ... 在 DOM 中插入圖片...
}
}
不過,網頁設計師通常並不直接使用 JSON 原生支援,而常用 jQuery 等函式庫自不同網域取回、解析 JSON 資料,這也是 JSON 大展身手的地方。考量到效能問題,有些函式庫已經開始採用瀏覽器的原生 JSON 能力來解析資料。目前 jQurey 與 Dojo 都已支援原生 JSON,所以您使用這些函式庫時一方面在已原生支援 JSON 的瀏覽器上將獲得更好的效能、另一方面在尚未支援的瀏覽器上也可以順利解析 JSON 資料。
沒有留言:
張貼留言
歡迎留下您的意見