javascript之JSON結構

來源:互聯網
上載者:User
使用JSON

JSON是一種用於資料交換的文字格式設定。其作用是提供結構化資料的一種表示,而不依賴於所用的語言和平台。使用這種格式,可以在不同語言編寫的應用程式之間交換資料,而且可以在不同機器上運行應用程式。與XML相比(這可能是最著名的資料交換格式),JSON的文法很簡潔。這說明,通過網路傳輸JSON資料通常需要更少的頻寬。

JSON建立在JavaScript語言的一個子集的基礎上。因此,其編碼和解析很直接。由於絕大多數Ajax開發人員同時也是JavaScript開發人員,所以JSON幾乎沒有什麼學習曲線。

3.2.1 JSON結構

JSON的基礎包括兩個結構:一個名值對集合,稱為對象(object),以及一個有序的值列表,稱為數組(array)。在JSON中,值(value)可以是以下某種形式:

對象

數組

數字

true

false

null

對象表示為JavaScript對象字面量,數組表示為JavaScript數組字面量,餘下的值也由相應的字面量表示。

由於JSON是JavaScript字面量的一個子集,文法方面存在一些限制。在一個JSON對象中,名值對中的名部分必須是一個字串,而值部分必須是得到支援的某種值。以下是一個對象的JSON表示,該對象包含兩個屬性:

屬性名稱(firstName和lastName)必須是串,而且必須包圍在雙引號中。下面的代碼錶示了一個類似的對象,將前面的代碼與之做一個比較:

在JavaScript中,這兩個對象有相同的結構。不過,第二個對象不是一個合法的JSON表示,因為屬性名稱沒有包圍在雙引號中。

JSON數組也存在一些限制,數組中的元素必須是得到支援的值。例如,Date對象不在支援的值之列,所以不能作為JSON數組的元素或JSON對象的一個屬性。String與JavaScript字串字面量有相同的表示,不過串必須用雙引號包圍。Number類似於JavaScript數字字面量,不過八進位和十六進位格式未得到支援。下面是一個JSON數組的例子:

布爾值(true和false)和null與相應的JavaScript字面量有相同的表示。

說明 方法不能使用JSON表示,因為JSON文法中不包括函數字面量。另外,JavaScript的new操作符也不是JSON文法的一部分,不能在對象或數組中使用。

JSON的優點之一是它易於解析。已經為許多語言編寫了很多JSON解析器,它們可以自動完成JSON的產生和解析。(在JSON官方網站上可以找到這些解析器的一個列表,見http://json.org/)在JavaScript中,解析過程相當直接,所要做的只是將JSON串傳遞給JavaScript eval 函數。如果有一個包含JSON資料的jsonString變數,以下代碼將解析這個變數,並返回相應的JavaScript對象:

注意,在調用eval之前要把JSON資料用括弧括起。這樣就要求eval將參數看作為一個運算式,而不會把對象字面量{}解釋為一個代碼塊。不過eval函數可以執行任意的代碼,如果資料來自一個不可信的來源,可能會導致安全問題。出於這個原因,一般建議在調用eval函數之前先驗證JSON資料。

說明 JSON官方網站(http://json.org/)提供了一個驗證JSON資料的Regex。可以在從該網站下載的JavaScript實現中找到這個Regex。

Microsoft Ajax Library有自己的JavaScriptSerializer對象,包含在Sys.Serialization命名空間中,這個對象負責JSON資料的編碼和解碼。下面來看它是如何工作的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.