大致講述JSON數(shù)組對(duì)象說(shuō)明
對(duì)于JSON數(shù)組還可以表示一個(gè)數(shù)組對(duì)象,使用 [] 包含所有元素,每個(gè)元素用逗號(hào)分隔,元素可以是任意的 Value,例如,以下數(shù)組包含了一個(gè) String,Number,Boolean 和一個(gè) null。
盡管有許多宣傳關(guān)于XML如何擁有跨平臺(tái),跨語(yǔ)言的優(yōu)勢(shì),然而,除非應(yīng)用于 Web Services,否則,在普通的 Web 應(yīng)用中,開(kāi)發(fā)者經(jīng)常為 XML 的解析傷透了腦筋,無(wú)論是服務(wù)器端生成或處理XML。
還是客戶(hù)端用 JavaScript 解析 XML,都常常導(dǎo)致復(fù)雜的代碼,極低的開(kāi)發(fā)效率。實(shí)際上,對(duì)于大多數(shù) Web 應(yīng)用來(lái)說(shuō),他們根本不需要復(fù)雜的 XML 來(lái)傳輸數(shù)據(jù),XML 的擴(kuò)展性很少具有優(yōu)勢(shì),許多 AJAX 應(yīng)用甚至直接返回 HTML 片段來(lái)構(gòu)建動(dòng)態(tài) Web 頁(yè)面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系統(tǒng)的復(fù)雜性,但同時(shí)缺少了一定的靈活性。
現(xiàn)在,JSON數(shù)組為 Web 應(yīng)用開(kāi)發(fā)者提供了另一種數(shù)據(jù)交換格式。讓我們來(lái)看看 JSON 到底是什么,同 XML 或 HTML 片段相比,JSON 提供了更好的簡(jiǎn)單性和靈活性。
數(shù)據(jù)格式解析
和 XML 一樣,JSON 也是基于純文本的數(shù)據(jù)格式。由于 JSON 天生是為 JavaScript 準(zhǔn)備的,因此,JSON 的數(shù)據(jù)格式非常簡(jiǎn)單,您可以用 JSON 傳輸一個(gè)簡(jiǎn)單的 String,Number,Boolean,也可以傳輸一個(gè)數(shù)組,或者一個(gè)復(fù)雜的 Object 對(duì)象。
String,Number 和 Boolean 用 JSON 表示非常簡(jiǎn)單。例如,用 JSON 表示一個(gè)簡(jiǎn)單的 String “ abc ”,其格式為:
"abc"
除了字符 ",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要編碼外,其他 Unicode 字符可以直接輸出。下圖是一個(gè) String 的完整表示結(jié)構(gòu)一個(gè) Number 可以根據(jù)整型或浮點(diǎn)數(shù)表示如下:這與絕大多數(shù)編程語(yǔ)言的表示方法一致,例如Boolean 類(lèi)型表示為 true 或 false 。此外,JSON數(shù)組中的 null 被表示為 null,注意,true、false 和 null 都沒(méi)有雙引號(hào),否則將被視為一個(gè) String 。
JSON 還可以表示一個(gè)數(shù)組對(duì)象,使用 [] 包含所有元素,每個(gè)元素用逗號(hào)分隔,元素可以是任意的 Value,例如,以下數(shù)組包含了一個(gè) String,Number,Boolean 和一個(gè) null:
["abc",12345,false,null]
Object 對(duì)象在 JSON 中是用 {} 包含一系列無(wú)序的 Key-Value 鍵值對(duì)表示的,實(shí)際上此處的 Object 相當(dāng)于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。 #t#
例如,一個(gè) Address 對(duì)象包含如下 Key-Value: city:Beijing street:Chaoyang Road postcode:100025(整數(shù))用 JSON 表示如下: {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
其中 Value 也可以是另一個(gè) Object 或者數(shù)組,因此,JSON數(shù)組 復(fù)雜的 Object 可以嵌套表示,例如,一個(gè) Person 對(duì)象包含 name 和 address 對(duì)象。