資源描述:
《使用JSON進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換傳輸詳細(xì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、使用JSON進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換-Android2011年05月11日星期三15:04在開發(fā)客戶端與服務(wù)端的應(yīng)用當(dāng)中,數(shù)據(jù)交換接口通常都是通過XML格式來進(jìn)行數(shù)據(jù)交換的。近年來,隨著AJAX技術(shù)的興起,JSON作為一種輕量級(jí)的數(shù)據(jù)交換格式,以其易于閱讀和編寫的優(yōu)點(diǎn),也越來越多的被使用到各個(gè)項(xiàng)目中。在OPhoneSDK中,也提供了JSON的類庫方便對(duì)JSON格式的數(shù)據(jù)進(jìn)行處理。本文將快速講解JSON格式,并通過代碼示例演示如何分別在客戶端和服務(wù)器端進(jìn)行JSON格式數(shù)據(jù)的處理。什么是JSON??????JSON(JavaScriptObjectNotation)是一種
2、輕量級(jí)的數(shù)據(jù)交換格式,易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,非常適合于服務(wù)器與客戶端的交互。JSON采用與編程語言無關(guān)的文本格式,但是也使用了類C語言的習(xí)慣,這些特性使JSON成為理想的數(shù)據(jù)交換格式。和XML一樣,JSON也是基于純文本的數(shù)據(jù)格式。由于JSON天生是為JavaScript準(zhǔn)備的,因此,JSON的數(shù)據(jù)格式非常簡單,您可以用JSON傳輸一個(gè)簡單的String,Number,Boolean,也可以傳輸一個(gè)數(shù)組,或者一個(gè)復(fù)雜的Object對(duì)象。?????????String,Number和Boolean用JSON表示非常簡單。例如,用JSON表示一
3、個(gè)簡單的字符串“abc”,其格式為:"abc"。????除了字符",,/和一些控制符(b,f,,r,t)需要編碼外,其他Unicode字符可以直接輸出。下圖是一個(gè)String的完整表示結(jié)構(gòu):圖1.String的完整表示結(jié)構(gòu)??????一個(gè)Number可以根據(jù)整型或浮點(diǎn)數(shù)表示如下:??圖2.Number的表示結(jié)構(gòu)????????這與絕大多數(shù)編程語言的表示方法一致,例如:??12345(整數(shù))-3.9e10(浮點(diǎn)數(shù))??????Boolean類型表示為true或false。此外,JavaScript中的null被表示為null,注意,true、fal
4、se和null都沒有雙引號(hào),否則將被視為一個(gè)String。???????JSON還可以表示一個(gè)數(shù)組對(duì)象,使用[]包含所有元素,每個(gè)元素用逗號(hào)分隔,元素可以是任意的Value,例如,以下數(shù)組包含了一個(gè)String,Number,Boolean和一個(gè)null:?Object對(duì)象在JSON中是用{}包含一系列無序的Key-Value鍵值對(duì)表示的,實(shí)際上此處的Object相當(dāng)于Java中的Map,而不是Java的Class。注意Key只能用String表示。例如,一個(gè)Address對(duì)象包含如下Key-Value:city:Beijing?
5、street:ChaoyangRoad?postcode:100025(整數(shù))用JSON表示如下:{"city":"Beijing","street":"ChaoyangRoad","postcode":100025}??{"city":"Beijing","street":"ChaoyangRoad","postcode":100025}????其中Value也可以是另一個(gè)Object或者數(shù)組,因此,復(fù)雜的Object可以嵌套表示,例如,一個(gè)Person對(duì)象包含name和address對(duì)象,可以表示如下:?{"name":"Michael","address
6、":???{"city":"Beijing","street":"ChaoyangRoad","postcode":100025}??}?{"name":"Michael","address":??{"city":"Beijing","street":"ChaoyangRoad","postcode":100025}}?一個(gè)實(shí)際例子????接下來,我會(huì)通過一個(gè)例子來詳細(xì)說明OPhone客戶端程序如何訪問服務(wù)端的接口程序讀取用戶列表數(shù)據(jù),并在模擬器上顯示用戶列表數(shù)據(jù)。?1、服務(wù)端接口程序????首先,我們創(chuàng)建一個(gè)名為User的JavaBean作為用戶對(duì)象類,用來
7、保存演示數(shù)據(jù)。publicclassUser{???????privateintid;???????privateStringname;???????privateStringemail;???????privateStringgender;???????????????publicintgetId(){???????????????returnid;???????}???????publicvoidsetId(intid){???????????????this.id=id;???????}???????publicStringgetName(){?????
8、??????????returnnam