Takahiro Octopress Blog

-1から始める情弱プログラミング

Freddyを使ってみよう!

SwiftでJSONパーサーライブラリを使ってみよう

GW最終日にブログを更新します。
以前、今更だけど使ってみようSwiftyJsonで紹介しましたが、今回は別のSwift製のJSONパーサーライブラリを紹介したいと思います。
本日は、FreddyというJSONパーサーライブラリを紹介します。
SwiftyJsonのGitHub上でのStar数が約1万なのに比べるとFreddyは約850と段違いに支持数は低いですが、割りと有名なライブラリかと思います。

CocoaPodsでインストール

まずはインストールです。
今回もOpen Weather Map APIをサンプルに利用したいのでAlamofireも合わせてインストールします。

1
2
3
4
5
6
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'Freddy'
pod 'Alamofire', '~> 3.0'

Freddyを使ってみる

続いて、早速Freddyを使ってみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
Alamofire.request(.GET, "http://api.openweathermap.org/data/2.5/weather?APPID=<あなた自身のAPPID>",
  parameters:["q":location]).responseJSON { (response) -> Void in
      if response.result.isSuccess {
          do {
              let json = try JSON(data: response.data!)
              let description = try json.array("weather")[0]["description"]
              print(description)
          } catch {
              print("例外が発生しました!")
          }
      }
}

SwiftyJsonでは下記のように書いていました。

1
2
3
4
5
6
7
8
9
10
11
12
13
Alamofire.request(.GET, "http://api.openweathermap.org/data/2.5/weather?APPID=<あなた自身のAPPID>",
  parameters:["q":location]).responseJSON { (response) -> Void in
      if response.result.isSuccess {
          guard let data = response.result.value else {
              return
          }
          let json = JSON(data)
          guard let description = json["weather"][0]["description"] else {
              return
          }
          print(description)
      }
}

FreddySwiftyJsonを比較すると、そこまで大きな違いはないと思います。
Freddyの場合は、

  • JSON型への変換に失敗した場合、throwで例外を投げる
  • JSON型データ内のデータ形式次第で実行するメソッドが変わる
    array, string, bool等のメソッドを使うことでアンラップを気にする必要がなくなります。

といった特徴があります。
どのライブラリを使った方が良いか否かは個々人の判断ですね。

簡単ですが、本日はここまで。

Comments