android gson使用--json2對象與對象2json

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;

      }

      

  }


圖1 生成的JSON數據

 

3.在客戶端解析JSON數據

  在Android工程中,我們可以通過HttpURLConnection接口訪問圖1所示的URL來獲得服務器上的JSON數據。

  得到JSON數據之後,便可以通過使用前面提到的fromJson()方法,將圖1 所示的JSON數據還原成對應的Person對象列表了。當然了,因爲這裏使用到了GSON,同樣需要向Android工程中導入gson-2.2.1.jar包。具體的實現方法如下。

複製代碼

/*
     * 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所示。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章