■はじめに
以前、【Swift】APIからPOSTでデータ取得する(Alamofire/SwiftyJSON) - Swift実践ブログでAlamofireとSwiftyJSONを使いましたが、今回はSwiftyJSONを使わずにパースしてみました。
■開発環境
・Xcode9.3.1
・Swift4.1
■実装部分
今回はOpenWeatherMapのAPIを使いました。
Сurrent weather and forecast - OpenWeatherMap
import UIKit
import Alamofire
struct JSONFeed: Codable {
let list: [list]
}
struct list: Codable {
let weather: [weather]
let main: main
let name: String
}
struct weather: Codable {
let main: String
let description: String
}
struct main: Codable {
let pressure: Int
let humidity: Int
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
weatherInfo()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func weatherInfo() {
Alamofire.request("{リクエストURL}").validate().responseJSON { response in
guard let data = response.data else {
return
}
let decoder = JSONDecoder()
do {
let feed: JSONFeed = try decoder.decode(JSONFeed.self, from: data)
print(feed)
} catch {
print(error)
}
}
}
}
■おわりに
SwiftyJSONを使うよりもコードがスッキリする印象なので、Swift4であれば今回の方法で行いたいと思います。
■関連リンク
・[Swift 4] SwiftyJSONを使わずにシンプルにJSONをデータ構造化する | Developers.IO
・[iOS][Swift 4] CodableでJSONのパース
・Swift 4でJSONの扱い - Galapagos Blog