iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
Mobile Development

iOS Developer Learning Android系列 第 19

iOS Developer Learning Android. Lesson 19 - JSON轉物件 (以Google爸爸的GSON為例)

昨天是講如何透過API跟後端溝通
requset後一定是為了拿到response
如果拿到了要幹嘛?
當然是轉成物件來用啊絕對不是有Map Object的話就拿來直接用

雖然Android有提供JSONObject來做到序列化/反序列化的功能
但今天還是來介紹另外一個有名的套件:Gson
(Gson也是我看過第一個有維基百科的套件....)

本日效果

實作說明

  1. 實在太方便了
    OMDBResult omdbResult = new Gson().fromJson(result,OMDBResult.class);
    一行打完收工
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
  2. 如果只講這樣實在太混了,補充一下,JSON的結構如下
{
    "Search": [
        {
            "Title": "Peeping Tom",
            "Year": "1960",
            "imdbID": "tt0054167",
            "Type": "movie",
            "Poster": "https://m.media-amazon.com/images/M/MV5BZjM3ZTAzZDYtZmFjZS00YmQ1LWJlOWEtN2I4MDRmYzY5YmRlL2ltYWdlXkEyXkFqcGdeQXVyMjgyNjk3MzE@._V1_SX300.jpg"
        },
        {
            "Title": "Tom and Jerry: The Magic Ring",
            "Year": "2001",
            "imdbID": "tt0303151",
            "Type": "movie",
            "Poster": "https://m.media-amazon.com/images/M/MV5BODg3OTMzNzU5N15BMl5BanBnXkFtZTgwNzQ3NTAwNzE@._V1_SX300.jpg"
        }
    ],
    "totalResults": "632",
    "Response": "True"
}

所以我們就拆成Result跟Movie兩層Model
這是很常見的結構
3. 再來是一個很常見的狀況,後端的命名跟我們想要的不一樣怎麼辦?當然是叫後端改啊
只要Model Class屬性的上一行加上後端的名稱即可

    @SerializedName("Search")
    public List<Movie> movieList;
  1. 還有我們可能會遇到後端每次來的結構變來變去到底要搞死誰...
    我們就可以用Gson提供的通用類別JsonObject.class去餵給fromJson(注意不是大寫JSONObject喔)
    然後這樣取值:jsonObject.get("name").getAsString()
  2. 再講點跟主題無關的
    他們的TextView跟我們的TextView一樣可以自動偵測連結☘️☘️☘️(android:autoLink = "web")
    但是他們的TextView還可以滾動這就牛逼了⚠️⚠️⚠️(android:scrollbars = "vertical")
  3. 最後提一下
    我常常這樣閃退

    看得出來為什麼嗎?
    因為畫面都還沒好(還沒ViewDidLoad)你就想findViewById
    如果習慣Swift寫法馬上初始化的應該會中標,可以注意一下

參考資料

今天的範例程式

可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️


如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~


上一篇
iOS Developer Learning Android. Lesson 18 - call API (使用超越AFNetworking的網路套件)
下一篇
iOS Developer Learning Android. Lesson 20 - Activity Gallery (不用再尋找或比較套件了,官方佛心內建常用UI Design Pattern)
系列文
iOS Developer Learning Android30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
MarkFly~
iT邦新手 4 級 ‧ 2020-07-27 18:05:35

一年後回來看
iOS的TextView本來就可以scroll啊....我在講什麼....

我要留言

立即登入留言