Android 利用gson解析json

反射和序列化
在開始前先貼篇文章暖暖身,讓大家了解Reflection(反射)和Serialization(序列化)的不同

常常在串接API時,伺服器端傳過來的是json格式。
我個人是很不相信自己的眼睛,所以直接用string get field的動作我是盡量不寫的。
取而代之的是用Gson提供的Deserializatione(反序列化)工具來達成這個目標,反序列化底層的實作是依賴Reflection(反射)機制而達成,不過不是這篇的重點。

如果有json data如下

1
2
3
4
{
    "fruit": "apple",
    "hello": "world"
}

我會用一個class,有著跟json檔一模一樣的field。

1
2
3
4
class Data{
    public String fruit;
    public String hello;
}

然後利用Gson的fromJson函式

1
2
3
4
5
Data jsonData(String jsonStr){
    Gson gson = new Gson();
    Data result = gson.fromJson(jsonStr, Data.class);
    return result;
}

將檔案給解析出來,如果實際的json物件屬性跟class資料屬性對不上的話,就會拋擲異常。
fromJson這個函式就是Gson的反序列化工具。