Swiftにおけるネットワーク通信では、REST APIなどから取得したデータがJSON形式であることが一般的です。そのため、受け取ったJSONをSwiftの型(構造体やクラス)に変換(デコード)する処理が必要になります。このとき重要な役割を果たすのが、Codableプロトコルです。
1. Codableプロトコルとは
Codableは、Swift標準ライブラリに用意されているプロトコルで、以下の2つのプロトコルを統合したものです。
-
Encodable: Swiftの型をJSONなどの形式にエンコード(変換)できることを表す -
Decodable: JSONなどをSwiftの型にデコード(変換)できることを表す
つまり、Codableに準拠した型は、JSONへの変換とJSONからの変換の両方が可能になります。
2. JSONをデコードする流れ
例えば、以下のようなJSONデータがAPIから返ってきたとします。
このJSONをSwiftの構造体に変換するには、次のようにします。
構造体を定義
JSONデータをデコード
JSONDecoderクラスは、Data型のJSONをCodable準拠の型に変換します。
3. JSONをエンコードする流れ
逆に、Swiftの構造体をJSONに変換するには以下のようにします。
出力されるJSON文字列は次のようになります。
4. JSONキーとSwiftのプロパティ名が異なる場合
APIから返されるJSONのキーがSwiftのプロパティ名と異なる場合は、CodingKeysという列挙型を定義して対応します。
まとめ
-
SwiftのCodableプロトコルは、JSONの**デコード(解析)とエンコード(変換)**を簡単にする仕組み
-
JSONDecoderとJSONEncoderを使って、JSONとの変換が可能
-
CodingKeysを定義することで、異なるキー名にも柔軟に対応できる
Codableは、安全かつ簡潔にJSONを扱うための重要なツールです。実際のAPI通信でも頻繁に利用されます。
生成日:2025/05/04