Latest 1.0.0
Homepage https://github.com/mike-neko/Kanagata
License MIT
Platforms ios 8.0, osx 10.10, watchos 2.0, tvos 9.0, requires ARC
Authors

GitHubのライセンス
Build Status
codecov
Carthage compatible
CocoaPods
CocoaPods

KanagataはJSONのデコードとエンコードを行えるSwift3.0で書かれたライブラリです。

Swiftの安全性とJSONの柔軟性をほどよく組み合わせつつ、直感的に書くことができます。

特徴

  • フォーマットベース
    • JSONのキー名と値の型をデータとして定義できる
      (クラスを定義したりコードを書く必要がない。また実行時の動的な変更が可能)
    • 変換時に指定したフォーマットかバリデーションされる  
  • 書きやすく、読みやすい 
  • タイプセーフ

インストール

Carthage

1. プロジェクトのCartfileに以下を追記してください。

github "mike-neko/Kanagata"

2. フレームワークをimportしてください。

import Kanagata

CocoaPods

1. プロジェクトのPodfileに以下を追記してください。

pod 'Kanagata'

2. フレームワークをimportしてください。

import Kanagata

手動

フレームワークを使わずに利用ができます。
その場合はKanagata/JSON.swiftをプロジェクトに追加するだけです。

使い方

フォーマットの定義

最初に変換したいJSONのフォーマットを定義します。

例えば、{ "name": "Mike", "age": 20 }というJSONは以下の様に定義できます。

let format: JSON.Format = [
    "name": .string,        // キー名: name, 中身はString
    "age": .int             // キー名: age, 中身はInt
]

JSONから変換する

文字列からの場合

let json = try JSON(string: text, format: format)

Dataからの場合

let json = try JSON(data: data, format: format)

もし、指定したフォーマットと一致しない場合は例外が発生します。

値を取得する

値の取得には各型毎に3つのパターンがあります。

name = String(json: json["name"])
name = try json["name"].stringValue()
let name: String = json["name"].value()

オブジェクトや配列から取り出す場合

// { errors: [1, 3, 4 ] }
json["errors"][0]               // 1
// { error: { code: 100 } }
json["error"]["code"]           // 100

値を設定する

値を設定(変更)することもできます。
ただし、フォーマットと一致する型のみ設定できます。

json["age"] = JSONData.value(21)        // 21に更新

JSONへ変換する

// Stringへ変換する場合
let jsonString = try json.stringData()
// Dataへ変換する場合
let jsonData = try json.data()

もし、指定したフォーマットと一致しない場合は例外が発生します。

その他の情報

Latest podspec

{
    "name": "Kanagata",
    "version": "1.0.0",
    "summary": "Kanagata is a JSON decoder and encoder in Swift.",
    "homepage": "https://github.com/mike-neko/Kanagata",
    "license": "MIT",
    "authors": {
        "mike-neko": "[email protected]"
    },
    "social_media_url": "https://twitter.com/m__ike_",
    "platforms": {
        "ios": "8.0",
        "osx": "10.10",
        "watchos": "2.0",
        "tvos": "9.0"
    },
    "source": {
        "git": "https://github.com/mike-neko/Kanagata.git",
        "tag": "1.0.0"
    },
    "source_files": "Kanagata/*.swift",
    "requires_arc": true,
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This