Android筆記之 以JSON方式與伺服器通訊

2021-06-22 14:01:13 字數 3012 閱讀 3771

1.json資料結構

在json

中有兩種資料結構:物件和陣列。

1.1物件

在json

中,乙個物件以「

」(右括號)結束。每個「名稱」後跟乙個「

:」(冒號),冒號後是該名稱的值,多個「名稱

:值」之間使用

「,」(逗號)分隔開來。名稱需要使用雙引號括起來,值如果是字串則必須用雙引號括起來,如果是數值型則不需要。其結構示意圖如圖

1所示。

圖1 json

物件結構示意圖

如下的**是乙個簡單的json物件示例:

1.2陣列

在json

中,陣列是值(

value

)的有序集合。乙個陣列以「

[」(左中括號)開始,「

]」(右中括號)結束。值之間使用

「,」(逗號)分隔開來。其結構示意圖如圖

2所示。

圖2 json

陣列結構示意圖

如下的**是乙個簡單的

json

陣列示例:

["

蘋果","

香蕉","

菠蘿"]

1.3值的型別

在json

的物件和陣列結構中,

value

值不僅可以是數字、字串等簡單資料型別,還可以是物件、陣列等,如圖

3所示。

圖3 json

中值的型別

因此,我們可以使用物件和陣列的組合構成複雜的資料結構。如下的**使用物件結構定義了乙個「

students

」物件,在「

students

」物件中包含了乙個學生陣列,而學生陣列中的值又是

json

物件。 ,]

}2.在伺服器端生成json資料

通常,客戶端在請求伺服器資料時,伺服器可以使用

xml文件、

json

資料或html

的形式將資料傳送給客戶端。

那麼如何在伺服器端生成

json

資料呢?首先需要完成以下兩個準備工作。 (

1)我們需要使用

myeclipse

建立了乙個

web project

,這裡我將該工程命名為了「

jsondemoproject」

,用來模擬伺服器端的

web服務。 (

2)我們還需要在該工程中匯入

json

的api

資料報json-lib-2.2.2-jdk15.jar。

在json

的api

中,提供了

jsonobject

類,通過呼叫

jsonobject

類的put(object key, object value)

方法,可以將乙個

object

物件以鍵值對的形式存入

jsonobject

物件。通過呼叫

jsonobject

類的tostring()

方法,則可以將

jsonobject

物件轉化為

json

資料。

如下的**建立了乙個

jsontools

類,並實現了靜態方法

createjsonstring()

,用來生成

json

資料。

public class jsontools 

}

通過使用該方法,我們可以很方便的將各種資料傳遞進來,並將其轉化成

json

資料。比如,我們可以在

jsonservice

類中,實現乙個簡單的獲取

person

物件列表的方法,具體如下:

/*

* function : 獲取person物件列表

* */

public listgetlistperson()

其中,person

物件具有id(

int)、

name

(string

)和age

(int

)三個屬性。

最後,我們可以建立乙個繼承自

的jsonaction

類,並實現其中的

dopost()

方法,用來響應客戶端對伺服器的請求。具體如下:

Android開發之json解析

現在分析下把我難倒了好幾天的乙個bug,就是json的解析。用到的api 獲得的json 1 16 query good 17 errorcode 0,18 web 19,27,3543 44 通過觀察json發現,既有大括號,又有中括號。1 payload 2 payload q content ...

Android進步之十一 Json解析

json資料格式,在android中廣泛應用於客戶端和網路通訊。參考文件 解析方法 jsonobject demojson new jsonobject jsonstring string url demojson.getstring url 2 解析object之二 解析方法 jsonobject...

android筆記之布局

三個屬性都用來適應檢視的水平或垂直大小,乙個以檢視的內容或尺寸為基礎的布局比精確地指定檢視範圍更加方便。1 fill parent 設定乙個構件的布局為fill parent將強制性地使構件擴充套件,以填充布局單元內盡可能多的空間。這跟windows控制項的dockstyle屬性大體一致。設定乙個頂...