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)
}
}
|
Freddy
とSwiftyJson
を比較すると、そこまで大きな違いはないと思います。
Freddy
の場合は、
- JSON型への変換に失敗した場合、throwで例外を投げる
- JSON型データ内のデータ形式次第で実行するメソッドが変わる
array
, string
, bool
等のメソッドを使うことでアンラップを気にする必要がなくなります。
といった特徴があります。
どのライブラリを使った方が良いか否かは個々人の判断ですね。
簡単ですが、本日はここまで。