JSONMagic 0.7.5

JSONMagic 0.7.5

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2016年10月
SPM支持 SPM

David Keegan 维护。



JSONMagic 0.7.5

  • David Keegan

JSONMagic

JSONMagic 用于在 Swift 中轻松遍历和解析 JSON。

示例

假设您从服务器接收到以下 JSON 用户配置文件

{
    "user": {
        "name": "David Keegan",
        "age": 30,
        "accounts": [
            {
                "name": "twitter",
                "user": "iamkgn"
            },
            {
                "name": "dribbble",
                "user": "kgn"
            },
            {
                "name": "github",
                "user": "kgn"
            }
        ]
    }
}

解析这样的内容可能需要在 Swift 中使用许多嵌套的 if 语句来将内容转换为正确的类型,以遍历数据树。

之前

let twitterUser: String?
if let data = serverResponse {
    if let json = try? NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: Any] {
        if let user = json?["user"] as? [String: Any] {
            if let accounts = user["accounts"] as? [Any] {
                if let twitter = accounts.first as? [String: Any] {
                    twitterUser = twitter["user"] as? String
                }
            }
        }
    }
}

之后

let twitterUser = JSONMagic(data: serverResponse).get("user").get("accounts").first.get("user").string

或者,如果您更喜欢下标语法 :)

let twitterUser = JSONMagic(data: serverResponse)["user"]["accounts"][0]["user"].string

它甚至支持 Paw 键路径。

let twitterUser = JSONMagic(data: serverResponse).keypath("user.accounts.0.user").string

JSONMagic 通过方法链处理所有这些,因此您可以一直使用可以无限链的神奇包装对象 JSONMagic,然后在最后调用 value 来获取最终值并将其转换为所需的最终类型。它还为所有 JSON 数据类型提供辅助方法:.bool.int.float.double.string.array.dictionary

它非常松散地处理这些,因此不关心传入数据或链中的 nil 值。

更多示例

let json = JSONMagic(data: serverResponse)

json.get("user").get("name").string // David Keegan
json["user"]["age"].integer // 30

let twitter = json.get("user").get("accounts").first
twitter["name"].value // twitter
twitter["user"].value // iamkgn

let dribbble = json.get("user").get("accounts").get(1)
dribbble.get("name").value // dribbble
dribbble.get("user").value // kgn

let github = json.get("user").get("accounts").last
github.get("name").value // github
github.get("user").value // kgn

let bad = json.get("user").get("accounts").get(5)
bad.get("name").value // nil
bad.get("user").value // nil

进度

  • [X] 徽章
  • [X] 测试
  • [X] Travis
  • [X] Carthage
  • [X] CocoaPods
  • [X] 描述
  • [X] 文档
  • [X] AppleTV
  • [X] AppleWatch
  • [X] 预编译框架
  • [ ] Travis 测试矩阵