使って創ってApp

ソフトウェアを使ったり作ったりするブログです

Swift 2.1 で JSON を扱う

SwiftJSON を扱ってみましょう。ブログの記事やお天気の情報を JSON 形式で配信している Web サービスが多く存在します。ですからJSON の扱い方を覚えれば、iOS アプリ開発で出来ることが格段に増えます。

Udemy の講座だと、レクチャー94で取り組みます。

www.udemy.com

開発環境

完成予定

以下の JSON をNSDictionary型に変換して、コンソールに表示します。

{ "city": "Tokyo", "weather": {"am": "Rain", "pm": "Sunny"}, "temperatures": [10, 12, 14, 8, 6] }

f:id:hitxutokun:20151211223624p:plain

JSON って?

JSON とは 一つの大きな { } 内にKey と Value のペアで複数の値を扱うことができるフォーマットのことです。

{ Key : Value }

文字は Key もダブルクォーテーションで囲みます。[ ]で Value を囲むことで、配列を作ることも出来ます。

[ Value, Value, Value ]

製作開始

まずは Xcode で新規プロジェクトを作成します。テンプレートは Single View Application を選択し、プロジェクト名を Demo_JSON にしました。

1. JSON ファイルを作成

Xcode で空のファイルを作成するか、適当なテキストエディタを使用して JSON ファイルを作成します。ファイル名は sample.json とし、中身は以下のようにしました。

{ "city": "Tokyo", "weather": {"am": "Rain", "pm": "Sunny"}, "temperatures": [10, 12, 14, 8, 6] }

sample.json をプロジェクトに追加します。

f:id:hitxutokun:20151211225002p:plain

2. プログラムで JSON ファイルを読み込む

ViewController.swift を開きます。ファイルのパスを調べて、NSData として変数に読み込みます。

ファイルのパスを取得

let path = NSBundle.mainBundle().pathForResource("sample", ofType: "json")!

NSDataとして読み込む

let jsonData = NSData(contentsOfFile: path)!
3. JSON を NSDictionary として扱う

JSONSwift で扱えるようにする NSJSONSerialization クラスの JSONObjectWithData メソッドを使用します。このメソッドはエラーを返す可能性があるので、do catch で囲みます。

do {
  let json = try NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers) as! NSDictionary
  print(json)
} catch let err as NSError {
  print(err.localizedDescription)
}

print 関数で結果を表示します。

f:id:hitxutokun:20151211223624p:plain

ちゃんと表示されましたか?おめでとうございます!

コードのところどころに書かれている ! は、この値は nil ではないよ!とプログラムに伝えるための記号です。

まとめ

  • JSON を扱うには NSJSONSerialization クラスを使う
  • プロジェクトに追加したファイルのパスは、NSBundleクラスを使う