標籤:android gson使用
JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式設定,為Web應用開發提供了一種理想的資料交換格式。
其實,要建立和解析JSON資料,也可以使用GSON來完成。GSON是Google提供的用來在Java對象和JSON資料之間進行映射的Java類庫。使用GSON,可以很容易的將一串JSON資料轉換為一個Java對象,或是將一個Java對象轉換為相應的JSON資料。
1.GSON的兩個重要方法
在GSON的API中,提供了兩個重要的方法:toJson()和fromJson()方法。其中,toJson()方法用來實現將Java對象轉換為相應的JSON資料,fromJson()方法則用來實現將JSON資料轉換為相應的Java對象。
1.1 toJson()方法
toJson()方法用於將Java對象轉換為相應的JSON資料,主要有以下幾種形式:
(1)String toJson(JsonElement jsonElement);
(2)String toJson(Object src);
(3)String toJson(Object src, Type typeOfSrc);
其中,方法(1)用於將JsonElement對象(可以是JsonObject、JsonArray等)轉換成JSON資料;方法(2)用於將指定的Object對象序列化成相應的JSON資料;方法(3)用於將指定的Object對象(可以包括泛型型別)序列化成相應的JSON資料。
1.2 fromJson()方法
fromJson()方法用於將JSON資料轉換為相應的Java對象,主要有以下幾種形式:
(1)<T> T fromJson(JsonElement json, Class<T> classOfT);
(2)<T> T fromJson(JsonElement json, Type typeOfT);
(3)<T> T fromJson(JsonReader reader, Type typeOfT);
(4)<T> T fromJson(Reader reader, Class<T> classOfT);
(5)<T> T fromJson(Reader reader, Type typeOfT);
(6)<T> T fromJson(String json, Class<T> classOfT);
(7)<T> T fromJson(String json, Type typeOfT);
以上的方法用於將不同形式的JSON資料解析成Java對象。
2.在伺服器端產生JSON資料
public class JsonTools {
/*
* Function : 產生JSON字串
* Param : value 想要轉換成JSON字串的Object對象
* Retuen : JSON字串
* Author : 部落格園-依舊淡然
*/
public static String createJsonString(Object value) {
Gson gson = new Gson();
String string = gson.toJson(value);
return string;
}
}
650) this.width=650;" src="http://images.cnitblog.com/blog/430074/201305/19231525-563945ed29934cf88f15ab9ccbd00977.jpg" style="margin:0px auto;padding:0px;border:0px;" />
圖1 產生的JSON資料
3.在用戶端解析JSON資料
在Android工程中,我們可以通過HttpURLConnection介面訪問圖1所示的URL來獲得伺服器上的JSON資料。
得到JSON資料之後,便可以通過使用前面提到的fromJson()方法,將圖1 所示的JSON資料還原成對應的Person對象列表了。當然了,因為這裡使用到了GSON,同樣需要向Android工程中匯入gson-2.2.1.jar包。具體的實現方法如下。
650) this.width=650;" src="http://common.cnblogs.com/images/copycode.gif" alt="複製代碼" style="margin:0px;padding:0px;border:none;" />
/* * Function : 解析JSON資料,還原成Person對象列表 * Param : jsonString 從伺服器獲得的Json資料 * Retuen : Person對象列表 */ public static List<Person> getListPerson(String jsonString) { List<Person> list = new ArrayList<Person>(); Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken<List<Person>>() {}.getType()); return list; }
可以看到,使用GSON解析JSON資料的代碼實現也非常簡單。其中,TypeToken是GSON提供的資料類型轉換器,支援多種資料集合類型轉換,其反射機制可以實現將解析出來的Java對象映射到對應的資料集合中。
在本執行個體中,同樣點擊Button按鈕向伺服器發送擷取JSON資料的請求,從伺服器獲得JSON資料後,使用以上的程式碼完成對JSON資料的解析,最後將解析得到的Person對象依次顯示在TextView控制項中。程式啟動並執行結果2所示。
650) this.width=650;" src="http://images.cnitblog.com/blog/430074/201305/19231730-51db738eed224a1d940a9e464dfd0c8b.jpg" width="356" height="205" style="margin:0px auto;padding:0px;border:0px;" />
android gson使用--json2對象與對象2json