SwiftyJSON とは?
SwiftyJSON は、Xcode プロジェクトで JSON ファイルをより簡単にデコードするためのサードパーティ製ライブラリです。
なぜ必要なのか?
JSON をエンコード・デコードする際には、あらかじめ定義された型を使うのがベストプラクティスとされています。しかし、組み込みの JSONDecoder を使う場合の欠点は、動的な JSON を扱うのが面倒だということです。仮にうまくやり遂げられたとしても、正しく処理するためだけに多くの手間がかかり、決して理想的とは言えません。
動的な JSON の例
次のような JSON があるとします:
{ "data": { "variable_1": "some text" }}ここで variable_1 というキーが動的に変わる場合、data.title のように単純にデータをデコードすることはできません。次は data.description だったらどうでしょう?
JavaScript なら、これを簡単に実現できます:
let dynamicKey = 'variable'const json = JSON.parse(JSONObejct)console.log(json.data[`${dynamicKey}_1`])data の後ろの [] に動的な文字列を入れるだけで値にアクセスできます。しかし、Swift ではこれができません。
だからこそ SwiftyJSON の出番です。
SwiftyJSON を使って JSON をパースする
SwiftyJSON の助けを借りれば、次のように書けます:
let json = JSON(data: JSONObejct)let dynamicVar = "variable_1"if let extracted = json[0]["data"]["\(dynamicVar)"].string { // It's wrapped with Optional automatically //Now you got your value inside data.variable_1, just change your variable value for dynamicVar as needed. print(extracted) // some text}これは JavaScript で行うのとほぼ同じ方法です。
直接的でシンプルです。
まとめ
このライブラリは今でも動作しますが、もうメンテナンスされていません。最後のコミットは 2 年前です。
それでも私は自分のプロジェクトで使い続けるつもりです。多くの時間と手間を省いてくれるからです。
JSON を扱うなら、ほぼ必須と言えるライブラリです。