iOSアプリ開発

SwiftでJSONデータを使いやすくする!Codableの使い方

APIからデータを取得する時、JSONでデータを受け取ることがあるかと思います。JSONでデータを受け取った時、受け取り側でモデルに変換してデータを扱うことがあります。Swift 4から提供されているCodableを使うことでモデルへの変換が簡単にできます。

今回は、Codableについて紹介します。

Codableとは?

Swift 4から提供されているプロトコルの1つで、JSONからモデルへ変換するときのように異なるフォーマットへ変換するのをサポートするプロトコルです。API通信などで受け取ったJSONデータとモデルを相互変換するのに非常に役に立ちます。

検証環境

  • Xcode 10
  • QuickとNimbleを利用して検証

Codableを使ったモデルの実装

1. JSONをCodableを使ってモデルに変換する

今回は、Qiita APIのユーザーモデルを利用します。まずは、Requiredなプロパティをモデルに定義します。

Codableを使って変換するテストを書いて確認して見ます。

実行すると以下のように、JSONからユーザーモデルへ変換できています。

2. JSONキーをスネークケースに対応する

サンプルで書いているJSONデータのキーはキャメルケースになっています。しかし、APIで取得するプロパティのキーはスネークケースなのでスネークケースに修正します。

スネークケースで利用する場合は、CodingKeysに対応するキーを設定します。対応づけが必要ない場合は、キーは省略できます。

テストのJSONデータも以下のように修正します。

先ほどと同様にテストを実行すると、以下のような結果になり成功します。

3. nullで渡ってくるケースにも対応する

APIを利用するとき、全ての値が必ず値を持っているとは限りません。その時は、Optionalを使って値をnilで保持できるようにしましょう。今回は、facebookIdを取得してみます。この値は、Facebookをリンクしていないと取得できません。

データにfacebook_idを追加して、nullをセットするようにします。

先ほどと同様にテストを実行すると、以下のような結果になり成功します。facebookIdにnilがセットされていますね。

まとめ

Codableを使うことで、DictionaryやSwiftyJSONを使うといったことなくJSONデータを簡単に変換できるようになります。また、工夫をすれば特殊な変換するロジックを挟むこともできる様になります。Codableは非常に便利なのでおすすめです。

Related post

  1. Pythonでスクレイピング

    BeautifulSoup4でid, classを持つDOMを取得して効率化しよう!

    前回は、"スクレイピングでヘッダー情報を付与する方法とその目的"を紹介…

  2. テクノロジー

    Appleの新しいMessagesで何ができるのか。

    WWDC 2016では数多くのセッションが行われました。WWDC 20…

  3. iOSアプリ開発

    Firebase iOSの解説・セットアップ編

    アプリを作る・サービスを立ち上げるといったとき、ほとんどの場合はDBや…

  4. Pythonでスクレイピング

    スクレイピングでヘッダー情報を付与する方法とその目的

    今回は、前回試したスクリプトにヘッダー情報を加えたリクエストを投げれる…

  5. テクノロジー

    IBDesignable、IBInspectableを使ってStoryboardでデザインする方法

    iOSアプリ開発をStoryboardを使って開発している方も増えてき…

  6. iOSアプリ開発

    xcconfigを使って本番とテスト環境を切り替える方法

    iOSアプリを開発していると、本番の環境とテストする環境を切り替えて開…

PAGE TOP