Json解析詳細筆記
Json是一種格式,也是網路最常見的溝通方式,所以很重要。
。參考資料:
For Swift4
。字典結構的模仿
。需要的資料才要模仿(不需要就不用)
。模仿資料的屬性名稱要跟key名稱一樣(就是名字一樣)
。如果該欄位可能沒有回傳值,一定要加上?
。都要遵從Codable(基本型別本身已遵從過)
可以看到有兩個key: results、info ,
如果我需要results裡面的資料,我只需模仿results的東西~
- 可以看到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。
參考文章:
可以幫我點個讚,或是分享一杯咖啡支持我。