【Swift2.x】swift-jsonライブラリを使って、JSONファイルを簡単に読み込む方法

SwiftでJSONファイルを読み込むのはかなり面倒くさくて、今回便利なライブラリを使ってJSONファイルを読み込んでみました。ゲームのステージをJSONで管理する場合を想定しています。JSONでステージ情報を構成していれば、追加ステージを配布する際にJSONファイルをダウンロードさせれば良いだけなので便利です。

JSONパーサーとして評判の良いUnboxを先に試してみたのですが何故か意図通りに動かず…今回使用したのはswift-jsonです。とても簡単に使えます。

制作環境

  • Xcode7.2.1
  • Swift2
  • swift-json (swift-2.0)

 

swift-jsonのインストール

ライブラリ本体はこちらからダウンロードします。

[GitHub] swift-json

swift-jsonの本体は、json.swiftファイルです。ダウンロードしたjson.swiftを直接プロジェクトにドラッグして追加するだけでOKです。cocoapodsを使ったインストール作業は必要ありません。

 

今回使用するJSONファイルの内容

下記の様な内容の追加ゲームステージをJSONで用意するイメージです。テストなので、このJSONファイルはLibraryフォルダではなく、プロジェクトのリソースに追加して読み込んでみます。

 

XcodeでSingleViewの新規プロジェクトを作成して、json.swiftとstage_001.jsonを追加しただけです。これで準備完了!

2016-06-13 00.40.18

 

swift-jsonを使って読み込む

次の方法で、JSONファイルから各要素を取り出す事ができます。
JSONの要素を取得する際は、asIntやasStringなどを使って型を明確にしないとエラーになるので注意。ただし、配列を取得する場合はasArrayは必要ありません。

 

これで、簡単にJSONファイルを読み込む事ができました。APIで公開されているJSONファイルを読み込む場合も基本は同じです。文字列のJSONデータではなくファイルURLを使いたい場合は、JSONデータをパースする箇所を下記の様に変えます。

 

配列は、取り出してから型変換する

配列から取り出した値はprintで出力できますが、型を調べるとJSON型となっています。このままだとtoIntなどでInt型に変換する事ができないので、JSONクラスのasIntを使って変換します。
変換というか…JSONクラスのasIntプロパティにセットされている訳ですね。