《Android》『JSON & GSON』- GSON 的基本程式語法教學 (下)

《Android Developers 參考文獻》

➥ Gson User Guide

 

《簡單介紹》

延續上一篇的介紹,這篇我們將把上一篇的範例程式碼,改成以 GSON 的 API 來解析,比起 JSON 官方所提供的 API,當 Server 端與 Client 端都是以 Java 程式語言為基礎時(才能使用相同的已知類別),GSON 所提供的 API 可以用更加精簡的程式、更快的解析 JSON 格式的資料。

 

《GSON 之資料解析基本用法》

在使用 GSON 之前,我們必須先取得 GSON 的 jar 檔,直接上網搜尋下載,並加入專案之 libs 資料夾即可,下面我們直接以程式碼的方式,來說明 GSON 的使用方法。

 

1. 基本的 Json 與字串格式互轉方法

Book.java

首先,我們定義了一個名為 Book 的類別,其中包含了書名、作者與價格三個參數,值得注意的是,當我們將自訂的類別生成物件並轉存成 JSON 格式的字串後,在 JSON 字串裡的物件資料格式,其名稱(key)即是參照到我們物件裡所定義的參數名稱。

mainActivity.java

接著我們透過 setDateFormat() 的方式,定義好時間資料所要的格式,並宣告了兩個基於 Book 類別的物件資料,分別命名為 book1 與 book2,並設定好初始資料,再透過前面宣告好的 gson 物件,使用其 toJson() 方法將物件資料轉換成 Json 字串,亦可以利用其 fromJson() 方法,將一個已知資料類別型態的 Json 字串,直接轉成該類別的物件,這可以省去傳統解析方式還要一筆一筆塞資料的時間,這也是為什麼 Gson 可以大幅縮減解析時間的原因。

但是當我們不知道資料類別為何時該怎麼辦呢?Gson 提供了一個 JsonObject 的通用類別,讓我們在不知資料類別為何時可以使用(通常表示 Server 端不是用 Java 所撰寫),但這樣便會失去 Gson 的便利性,變成類似 Json 傳統解析的模式。

2. 一次要解析多筆物件格式之 Json 與字串格式互轉方法

mainActivity.java

若是一次要解析多筆物件格式的資料,我們可以先宣告一個 ArrayList,將所有物件存入以後,同樣透過 toJson() 方法將物件陣列的資料直接轉換成 Json 字串,而在將 Json 字串轉換成已知類別資料格式時,因為我們知道將收到的資料格式為 List<Book> 的型別,這邊我們特別宣告了一個 Type 類別的 collectionType 來儲存這個型別,再利用 fromJson() 方法,即可以把此 Json 字串 直接轉換成 List<Book> 型別的資料。

 

3. 程式裡所宣告的資料物件本身帶有 List 型別之 Json 與字串格式互轉方法

還有一種可能,就是程式裡所宣告的資料物件本身帶有 List 型別,我們同樣也可以利用 Gson 類別來加以解析,首先,我們定義了一個名為 Order 的類別,其中包含了訂單、客戶、購買時間與購買清單四個參數,其中購買清單是一個 List 型別的參數,用以存放多個 Book 類別的物件。

mainActivity.java

由這些例子可知,比起上一篇的範例使用 Json 基本的 API 做解析,在已知所解析資料格式的類別時,使用 Gson 解析會快上許多,且程式碼亦更加精簡。

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *