在這篇博客中,你將學會用Gloss來解析JSON數據。項目中的JSON文件包含App Store排行榜上前25個app。
參考博客:
Swift Tutorial: Working with JSON
Swift方式解析JSON數據
用Gloss解析JSON數據
JSON對象映射(JSON Object Mapping)
對象映射(Object Mapping)是指將JSON對象轉化成Swift對象。在定義了模型對象和相應的映射規則后,Gloss會為你解析JSON數據。好處在于:
- 代碼簡潔
- 直接操作對象而不是字典和數組
- 可通過擴展model class來添加新功能
解析本地JSON數據
-
定義模型對象
模型對象必須遵守Decodable協議,這樣才能解析JSON數據。
1.新建一個文件TopApps.swift,在里面創建data model。那么<~~表示什么呢?它是編碼運算符(Encode Operator),能讓Gloss將key為”feed“的值解碼。
2.新建文件Feed.swift,在里面定義Feed
3.定義App模型對象,它代表JSON文件中的一個app
上面兩個模型對象的屬性是可選的,但是這里定義的兩個屬性都是non-optional的,所以我們需要檢查它是否為nil。
-
使用Gloss
在playground里,添加以下代碼
在控制臺里,你可以看到
console
解析遠程JSON數據
打開DataManage.swift,聲明TopAppURL。
從URL加載數據。
用optional binding確保data存在。
將data傳到success閉包里。
Gloss底層淺析
剛才用到的<~~其實是Decoder.decode函數的一種運算符。Gloss有很多種解碼函數:
- 普通類型(Decoder.decode)
- 可解碼的model(Decoder.decodeDecodable)
- 普通數組(Decoder.decode)
- 可解碼model類型的數組(Decoder.decodeDecodableArray)
等等,這里就不列舉了。
對于Gloss來說,Decodable model這個概念很重要。
項目地址