Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【Swift】Swift4でJSONのパース(SwiftyJSONを使わない方法)

■はじめに

以前、【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()
        // Do any additional setup after loading the view, typically from a nib.
        weatherInfo()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    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