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

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.