参考はじめにこんにちは、nukkyです。私はSwiftでJSONを取り扱う際に、ObjectMapperを使用していたのですが、Swift4から追加されたCodableが便利そうなのでこちらを使用したいと思い備忘録がてら書いていこうと思います。CodableとはCodableはSwiftが提供している構造体やクラスなどをJSONに書き出す、読み込むためのプロトコル。CodableはEncodable(書き出し用)とDecodable(読み込み用)の二つのプロトコルで構成されています。DocumentationCodable使いたい理由いままで、JSONを取り扱おうと思ったらJSONをパースして、Dictionaryのキーを指定してデータクラスに代入(マッピング)するような流れを実装していたと思うのですが、これだとメンテナンス性も悪いうえコード量もそこそこになります、ライブラリを使用していても結局パース後のデータ構造への代入処理を記載したりマッピングは必須だったと思います。Codableであれば基本的にマッピングは不要になりコードもすっきりかけます!実装とりあえずJSONを読み込むまずCodableで単純なJSONを読み込んで見たいと思います。読み込むJSONは以下を用意します。20}データを入れる構造体を作成します。Int}JSONデータをデコードして構造体に変換します。error.localizedDescription)}これだけです。printのログを見てもらえばわかりますがマッピング処理を一切書かずに済んでいます。比較用にObjectMapperの場合、同じJSONで処理内容は以下になります。JSONは同じものを使用するとして構造体を作成します。map["age"]}}JSONデータをデコードして構造体に変換します。Mapper<User>().mapArray(jsonData)マッピングをしなくてはならないため構造体の処理に明確な差が出てしまいますね。Hearst-DD/ObjectMapperネスト配列に対応してみようJSONデータがネストしている場合でも大丈夫です、Codableならネストも簡単です。JSONを用意します。"photo2"}]}そうしたら「photos」が配列になっているので以下のようなデータ構造体を用意します。String}}JSONデータをデコードして構造体に変換します。error.localizedDescription)}JSONのキーがスネークケースの場合(Swift4.0)Swiftの変数はキャメルケースですが、JSONのキーはスネークケースという場合も結構あります、その際はCodingKeysという機能で対応することが可能です。JSONのキーはスネークケースのJSONを用意します。"山田太郎",}データを入れる構造体にCodingKeysを追加し作成します。"user_name"}}JSONのキーがスネークケースの場合(Swift4.1)結局マッピングみたいなことが必要なのかと思っていましたがSwift4.1からEncoderの「keyEncodingStrategy」やDecoderの「keyDecodingStrategy」を設定することで、キャメルケースのプロパティ名からスネークケースのキーが自動作成できるようになりました。.convertToSnakeCaseさいごにCodableオススメですね。個人的には今までライブラリで行なっていたJSONの取り扱いは網羅できて、かつコード量も減るといいことづくめだと思います。Swift4以降で追加されれた機能など深掘りしていなかったのであらためていろいろチェックしていきます。これからiOS12/Xcode10も出ますしどんどん新機能を試してブログにしていきますね。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイト上に表示された文字を入力してください。こんにちは、nukkyです。こんにちは、nukkyです。私たちは無料アプリもリリースしています、ぜひご覧ください。下記のアイコンから無料でダウンロードできます。