Json解析詳細筆記

Json是一種格式,也是網路最常見的溝通方式,所以很重要。

。參考資料:

For Swift4

。字典結構的模仿

。需要的資料才要模仿(不需要就不用)

。模仿資料的屬性名稱要跟key名稱一樣(就是名字一樣)

。如果該欄位可能沒有回傳值,一定要加上?

。都要遵從Codable(基本型別本身已遵從過)

可以看到整包是字典,所以我們要模擬這個結構

可以看到有兩個key: results、info ,

如果我需要results裡面的資料,我只需模仿results的東西~

  1. 可以看到Json的key: “results” 後面接著[一大串東西](array)

故在模擬時,先將results的value當作Optional Any,等等再處理。

(字典就是丟入key,會得到值; 所以丟入results會得到array形式)

2.可以看到array中括弧[ ]只有一個物件在裡面,從{ ….到}是一整個物件

物件裡面有字典也有更細的字典

只要看想要的資料即可,所以在做一個struct結構,

因為name、picture會拿到一個字典,先將value當作Optional Any,

等等再處理。

3.在針對name這個字典建立struct結構,

name裡面有3個key,只取要的部分first、last的值

4.再把剛剛any的值取代為Name這個類別,

Name這個類別就可以取到我們剛剛做好的東西

Name結構:模擬了Name會拿到的值

5.接下來,我還要取picture這個字典裡的東西,

裡面有3個key,我只要用large

6.同樣的,把picture的值取代為剛剛做好的picture結構

picture結構:模擬了picture會拿到的值

7.同理,我們results拿到的資料結構會是我們陣列裝SingleData形別

故我們取而代之

[SingleData]結構:模擬了results會拿到的值

因為我自己都覺得很繁瑣,筆記起來比較清楚,只能多練習了嗚嗚

。如果真的解析不出來,提供解答篇:

。如果想要key值與model參數名稱不同時:

利用enum CodingKeys,來製作新的name來使用,

定義規則如下:

  • enum名字叫 CodingKeys。
  • raw value 型別為 String。 (故也遵從:String)
  • 遵從 protocol CodingKey。
  • 將每個 property 寫成 case,case 名稱等於 property。若 property 名稱和 JSON key 的名字不一樣,再將 key 的字串設為 case 的 raw value。

參考文章:

可以幫我點個讚,或是分享一杯咖啡支持我。

--

--

奇妙仙子
彼得潘的 Swift iOS / Flutter App 開發教室

When you want something, all the universe conspires in helping you to achieve it.