【Swift】プロジェクト内のJSONファイル読み込み

プロジェクトにリソースとしてバンドルされたJSONファイルを読み込む方法を解説します。

リソースファイルではなく、アプリ内のファイルシステムにあるファイルにアクセスしたい場合は、【Swift】アプリ内のファイル読み書き も合わせてご覧下さい。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Xcode】11.6
【Swift】5.2.4
【iOS】13.6
【macOS】Catalina バージョン 10.15.5
スポンサーリンク

JSONファイルの準備

次のような従業員情報を格納した"employee.json"を準備します。

下図のようにファイルをドラッグしてProject Navigatorに追加します。

プロジェクトにJSONファイルを追加する

スポンサーリンク

サンプルソースと解説

情報を格納するEmployee構造体は、JSON形式に合わせて次のようにします。
Codableプロトコル準拠とします。

プロジェクトに追加したemployee.jsonファイルを読み込む部分のコードがこちらです。

①ファイルのパスを取得

Xcodeでビルドされたアプリでは「バンドル(Bundle)」と呼ばれるものが作成され、プロジェクトに追加したファイルはこのBundle内に配置されます。

Bundle.main.url()を使って、このBundle内に格納された対象ファイルのパスを取得します。

引数(forResouece)にはファイル名、引数(withExtension)に拡張子を指定します。
対象ファイルが存在しない場合はnilが戻りますので、サンプルではfatalError()で強制的にアプリをクラッシュさせています。

②ファイルの読み込み

Data(contentsOf :)を使用して、ファイルの内容をData型にロードします。

このメソッドは例外をスローする可能性があるので、tryを付けて呼び出します。
この例ではtry?を使っているので、例外自身は無視されますが、戻り値がnullになりますのでその場合はfatalError()が発生します。

③JSONデコード処理

JSONデータをデコードし、オブジェクト化します。

④データ確認

オブジェクト化したデータの表示処理です。

出力結果

スポンサーリンク

JSONファイル読み込み処理を汎用化する

Bundleに拡張機能を追加して、JSONファイル読み込みを汎用化すると便利です。
次のコードをプロジェクトに追加します。

ポイントはSwiftのジェネリック機能を使い、取得したJSONデータを格納するオブジェクトの形式も汎用化している点です。
次のように呼び出すだけで、JSONファイルの読み込みができます。

スポンサーリンク

あわせて読みたい記事

【Swift】Codableを使ったJSON変換
Codableを使ったJSON変換について解説します。
【Swift】アプリ内のファイル読み書き
(2022/01/18 更新) アプリ内のファイル読み書き方法を解説します。
【Swift】プロジェクト内のファイル読み込み
プロジェクトに含まれているリソースファイルにアクセスする方法を解説します。 アプリ内のファイルシステムへアクセスする方法を知りたい方は、を御覧ください。
swift
スポンサーリンク