Edited at

Swiftで面倒なJSONの取り扱いを10倍便利にするSwiftyJSON

More than 3 years have passed since last update.

SwiftyJSON

https://github.com/lingoer/SwiftyJSON

上記を読んでしまえば一瞬なんですが、一応使い方をこちらにもそのまま書いておきます。


JSONの取り扱いって面倒ですよね?

[

{
......
"text": "just another test",
......
"user": {
"name": "OAuth Dancer",
"favourites_count": 7,
"entities": {
"url": {
"urls": [
{
"expanded_url": null,
"url": "http://bit.ly/oauth-dancer",
"indices": [
0,
26
],
"display_url": null
}
]
}
......
},
"in_reply_to_screen_name": null,
},
......]

こんなデータがあったとします。

データの取り出しはこんな感じ

let jsonObject : AnyObject! = NSJSONSerialization.JSONObjectWithData(dataFromTwitter, options: NSJSONReadingOptions.MutableContainers, error: nil)

if let statusesArray = jsonObject as? NSArray{
if let aStatus = statusesArray[0] as? NSDictionary{
if let user = aStatus["user"] as? NSDictionary{
if let userName = user["name"] as? NSDictionary{
//やっと取り出せました。

}
}
}
}

面倒ですよね。。

下記のような方法でも汚い。

let jsonObject : AnyObject! = NSJSONSerialization.JSONObjectWithData(dataFromTwitter, options: NSJSONReadingOptions.MutableContainers, error: nil)

if let userName = (((jsonObject as? NSArray)?[0] as? NSDictionary)?["user"] as? NSDictionary)?["name"]{
//What A disaster above
}


そこでSwiftyJSONの登場


セットアップ

https://github.com/lingoer/SwiftyJSON

まだswiftはpodに対応していないらしいので上記からzipをダウンロード&解答してSwiftyJSON.swiftをダウンロードしてプロジェクトに投げ込んで設定完了

この辺から見てください

cocoapodsセットアップからSwiftyJSON動作確認まで


使い方

var url = "http://maps.googleapis.com/maps/api/directions/json?origin=Boston,MA&destination=Concord,MA&sensor=false"

var reqest = NSURLRequest(URL: NSURL(string: url))

NSURLConnection.sendAsynchronousRequest(reqest,queue: NSOperationQueue.mainQueue(),completionHandler:{
(res: NSURLResponse!, data: NSData!, error: NSError!) in
let json = JSONValue(data)
if let distance = json["routes"][0]["legs"][0]["distance"]["text"].string{
println(distance)
}
})

簡単ですね。