使用JSON復(fù)雜的結(jié)構(gòu)的使用說明
使用JSON名稱/值對或 XML 時(shí),實(shí)際上是使用 JavaScript 從應(yīng)用程序中取得數(shù)據(jù)并將數(shù)據(jù)轉(zhuǎn)換成另一種數(shù)據(jù)格式。在這些情況下,JavaScript 在很大程度上作為一種數(shù)據(jù)操縱語言。
用來移動(dòng)和操縱來自 Web 表單的數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換為一種適合發(fā)送給服務(wù)器端程序的格式。但是,有時(shí)候 JavaScript 不僅僅作為格式化語言使用。在這些情況下,實(shí)際上使用 JavaScript 語言中的對象來表示數(shù)據(jù),而不僅是將來自 Web 表單的數(shù)據(jù)放進(jìn)請求中。在這些情況下,使用JSON從 JavaScript 對象中提取數(shù)據(jù),然后再將數(shù)據(jù)放進(jìn)名稱/值對或 XML,就有點(diǎn)兒多此一舉 了。
這時(shí)就合適使用 JSON:JSON 允許輕松地將 JavaScript 對象轉(zhuǎn)換成可以隨請求發(fā)送的數(shù)據(jù)(同步或異步都可以)。JSON 并不是某種魔彈;但是,它對于某些非常特殊的情況是很好的選擇。不要認(rèn)為您不會(huì)遇到這些情況。閱讀本文和下一篇文章來了解 JSON,這樣,遇到這類問題時(shí)您就知道該怎么辦了。
簡單地說,使用JSON可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個(gè)字符串,或者在異步應(yīng)用程序中將字符串從 Web 客戶機(jī)傳遞給服務(wù)器端程序。#t#
這個(gè)字符串看起來有點(diǎn)兒古怪(稍后會(huì)看到幾個(gè)示例),但是 JavaScript 很容易解釋它,而且 JSON 可以表示比名稱/值對更復(fù)雜的結(jié)構(gòu)。例如,可以表示數(shù)組和復(fù)雜的對象,而不僅僅是鍵和值的簡單列表。
當(dāng)需要表示一組值時(shí),JSON 不但能夠提高可讀性,而且可以減少復(fù)雜性。例如,假設(shè)您希望表示一個(gè)人名列表。在 XML 中,需要許多開始標(biāo)記和結(jié)束標(biāo)記;如果使用典型的名稱/值對(就像在本系列前面文章中看到的那種名稱/值對),那么必須建立一種專有的數(shù)據(jù)格式,或者將鍵名稱修改為 person1-firstName 這樣的形式。
如果使用JSON,就只需將多個(gè)帶花括號(hào)的記錄分組在一起:
- Code:
- { "people": [
- { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
- { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
- { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
- ]}