しろかい!

アプリ開発や機械学習などの開発Tips.

SwiftでJsonを簡単に扱えるライブラリ「swift-json」が超便利!

普通にやると面倒くさいSwiftにおけるJsonの扱いが超簡単になるライブラリ「swift-json」の紹介です.

swift-jsonとは?

SwiftにおけるJsonの扱いを簡単にしてくれるライブラリです.

作者のdankogaiさんに感謝です!

セットアップ

swift-json/json.swift at master · dankogai/swift-json · GitHub
上記のページのjson.swiftを下記画像のように自身のプロジェクトに配置するだけでOK!超簡単!

f:id:shun9167:20141214125806p:plain

使い方

とりあえずコードを示してから,詳細を説明します.
以下のコードでは,HeartRails Expressという駅情報を取得できるAPIから新宿駅の情報をJson形式のデータを受け取り,内容を表示します.

// APIからJsonを取得してパース
let json = JSON(url:"http://express.heartrails.com/api/json?method=getStations&name=%E6%96%B0%E5%AE%BF")
// 特定の要素の取り出し
var line = json["response"]["station"][2]["line"]
println("stationの3番目の要素のline: \(line)")
// 配列要素の取り出し
for (i,station) in json["response"]["station"] {
    println("-----")
    for (key, value) in station {
        println("\(key): \(value)")
    }
}

Jsonの取得とパース

// APIからJsonを取得してパース
let json = JSON(url:"http://express.heartrails.com/api/json?method=getStations&name=%E6%96%B0%E5%AE%BF")

指定したURLからJson形式のデータを取得します.このサンプルでどのようなデータが取得できるかは実際にURLにアクセスしてみてください.
http://express.heartrails.com/api/json?method=getStations&name=%E6%96%B0%E5%AE%BF

これを,JSON()という関数でパースします.

特定の要素の取り出し

それではパースした内容を取得してみましょう.

// 特定の要素の取り出し
var line = json["response"]["station"][2]["line"]
println("stationの3番目の要素のline: \(line)")

これを実行すると下記のように表示されます.

stationの3番目の要素のline: JR山手線

ほぼ見たまんまですが,responseの中のstation配列の3番目の要素のlineを取り出しています.
このようにして,好きな要素を簡単に取得できるのがswift-jsonの素晴らしいところです!

配列要素の取り出し

最後に,配列要素を全て取り出す方法を紹介しておきます.

// 配列要素の取り出し
for (i,station) in json["response"]["station"] {
    println("-----")
    for (key, value) in station {
        println("\(key): \(value)")
    }
}

これを実行すると以下のように表示されます.

-----
x: 139.700604
postal: 1600022
y: 35.690067
prefecture: 東京都
next: 大久保
line: JR中央線
name: 新宿
prev: 代々木
-----
x: 139.700643
postal: 1600022
y: 35.689873
prefecture: 東京都
next: 池袋
line: JR埼京線
name: 新宿
prev: 渋谷
-----
x: 139.700643
postal: 1600022
y: 35.689873
prefecture: 東京都
next: 新大久保
line: JR山手線
name: 新宿
prev: 代々木
-----
...(以下略)

このようにfor inループで簡単に取り出せます.
ただし,注意してほしいのはタプルを用いて取り出すということです.
上の例では,iに何番目の要素かが,stationに実際の要素が入っています.

その他の使い方

英語ですが,GitHubに詳しい説明が書かれていますのでそちらをどうぞ!

以上,SwiftJsonを簡単に扱えるライブラリ「swift-json」の紹介でした.

参考