SwiftでJSONを使ってみた

今までObjective-cJSONをやっていたんですが、 Swiftをそろそろやってみようと思い調べながらやってみましたのでメモついでに書き込みます。

共通定数クラス

取得先のURLは共通定数クラスに定義したいので以下のようにしました。 (他にいい書き方ないのかな。。。)

import Foundation

class const {
    /** JSON用URL */
    class jsonUrl {
        class var hoge:String{
            return "http://hoge.com/hoge.json"
        }
        ・
        ・
        ・
    }
}

JSONを取得してログに出してみる

JSONのサンプル

取得するJSONのサンプルは以下の通りです。

{
  "items" : [
    {
      "title" : "hogeeeeee",
      "image" : "http://hoge.co.jp/hogeeee.jpg",
      "release" : "2015-03-01T00:00:00+00:00",
      "auth" : "保毛保毛"
    },
    ・
    ・
    ・
   ]
}

定数を取得

先ほど Const.swift で定義した値を使ってNSData型で取得します。

var strJsonUrl = const.jsonUrl.hoge
var jsonData = NSData(contentsOfURL: NSURL(string: strJsonUrl)!)

Swiftで単純にやってみた

キーitemsの中にあるリストから1つ目を取得し、その中のキーtitleのValueを取得してみます。

let jsonMap:NSDictionary = NSJSONSerialization.JSONObjectWithData(jsonData!,options: NSJSONReadingOptions.AllowFragments, error: nil) as NSDictionary
if let itemsArray = jsonMap["items"] as? NSArray {
    if let firstItem = itemsArray[0] as? NSDictionary {
        if let item = firstItem["title"] as? NSString {
            println(item)
        }
    }
}

面倒すね。。

hogeeeeee

SwiftyJSONを使ってみた

SwiftyJSONを取得します。 実際に使うのは Source ディレクトリの中にある SwiftyJSON.swift のみです。 そのままプロジェクトにドラッグアンドドロップで取り込みます。

git clone https://github.com/SwiftyJSON/SwiftyJSON.git

ソースは以下のとおりです。

let json = JSON(data:jsonData!)
println(json)
if let title = json["items"][0]["title"].string {
    println(title)
}

とっても簡単! SwiftyJSONがすげー!って記事をいくつか見たんですが、半信半疑でやった結果 やっぱりすげー!でした。

参考

※サイトに記載されてるままではOptionalでエラーになってしまいました。