JSON in JavaScript

來源:互聯網
上載者:User

JSON in JavaScript

JavaScript 是一種被介紹為運行在網景瀏覽器上,面向目的的頁面指令碼程式設計語言。很多人認為它是Java的一個子集,但它不是。它是一種方案--是一種類似於C語言的文法並且弱類型的語言。JavaScript在ECMAScript Language Specification, Third Edition.裡面被標準化。

JSON是指令碼目標原義標記的一個子集。因為JSON是指令碼的一個子集,所以你可以毫無疑問地使用它。

var myJSONObject = {"bindings": [

{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},

{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},

{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}

]

};

在這個樣本裡,程式建立了一個對象,這個對象只有一個"bindings"成員。這個"bindings"成員有一個包含了三個對象的數組,每個對象都包含了"ircEvent","method","regex"成員。

成員可以通過使用小圓點或下標來擷取。例如通過myJSONObject.bindings[0].method就能擷取倒"newURI"成員。

myJSONObject.bindings[0].method // "newURI"

可以使用eval()函數將一個JSON文本轉化為一個對象。eval()函數負責呼叫指令碼編譯器。因為JSON是指令碼的一個專屬子集,所以編譯器將正確地解析文本並且創造一個類結構。

var myObject = eval('(' + myJSONtext + ')');

Eval函數是非常快的。然而,它可以編譯並執行任何指令碼程式,因此它可能會帶來安全問題。只有原始碼是被信任併合法的才可以使用eval函數。當網路伺服器同時提供基頁和JSON資料時,在網路應用程式裡,這是非常普遍的。有時候原始碼是不被信任的。事實上,用戶端從不被信任。

當安全比較重要的時候使用JSON解析就好一些。JSON解析只會識別JSON文本並且它更安全。JSON如下所示:

var myObject = JSON.parse(myJSONtext, filter);

可選的參數filter是一個函數。這個函數將被最終結果的每一層的每一個鍵和值調用。每一個值都將被filter函數的結果替代。這可以用於將一般的對象轉化為一些特定對象的執行個體。如下所示:

myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value;
});

JSON stringifier則走向一個相反的方向,它將指令碼資料轉化為JSON文本。JSON不支援迴圈的資料結構,因此不要向JSON stringifier裡傳入迴圈的結構。

var myJSONText = JSON.stringify(myObject);

如果stringify方法遇到一個對象包含了toJSON方法,它就會調用這個方法,然後返回這個值。這樣就允許一個對象去定義它自己的JSON代理。

Stringifier方法可以接收一個可選的字元數組。這些字串被用來遴選包含在JSON文本裡的屬性。然而,對象的所有屬性都將被包含在內。在任何情況下,JSON裡的值如果沒有代理將會被排除(例如函數和未定義)。

The open source code of a JSON parser and JSON stringifier is available. When minified it is less than 2K.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.