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. iOSアプリ開発

    iOSアプリ初心者が覚えておきたい10のUIクラス

    iOSアプリを開発したいけど、最初は何を知っていたら開発できるのかわか…

  2. iOSアプリ開発

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

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

  3. Pythonでスクレイピング

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

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

  4. テクノロジー

    iOSアプリ開発が簡単にできるStoryboard入門

    iOSアプリを開発しようとXcodeをダウンロードしてプロジェクト作成…

  5. テクノロジー

    今週のITニュースハイライト 7/2 – 7/8

    7月2日〜7月8日に話題・気になったITニュースを紹介します。…

  6. テクノロジー

    ReactiveXとは?RxJSの入門と導入手順

    Rx (Reactive Extension)とはここ数年で話題になっ…

  1. iOSアプリ開発

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

    WiMAX 2+を3週間使って分かったメリットと制限のこと
  3. テクノロジー

    ReactiveXで使うStreamとObserverとは?RxJSでわかりやす…
  4. テクノロジー

    今週のITニュースハイライト 6/25 – 7/1
  5. 日記

    先日、ディレクターだらけの大忘年祭 2013へ参加してきました!
PAGE TOP