テクノロジー

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

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

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

Codableとは?

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

検証環境

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

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. テクノロジー

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

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

  2. テクノロジー

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

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

  3. テクノロジー

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

    Twitterの@nagami_hiroでは毎日きになるITニュースや…

  4. テクノロジー

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

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

  5. テクノロジー

    売れるiOSアプリが作れるようになるおすすめの本8選

    アプリを作ってみたいけど作り方がわからない。…

  6. テクノロジー

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

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

  1. テクノロジー

    Firebase iOSの解説・セットアップ編
  2. テクノロジー

    売れるiOSアプリが作れるようになるおすすめの本8選
  3. Book

    マネジメント

    本を読むことから何が生まれるのか
  4. デザイン

    デザインで参考になる配色と3つの効果
  5. デザイン

    アンティーク風デザインに使える3つのフリー素材サイト
PAGE TOP