SwiftCafe 快报 - 使用 SwiftyJSON 处理 JSON 解析

SwiftCafe 快报 - 使用 SwiftyJSON 处理 JSON 解析_第1张图片
SwiftyJSON

今天给大家介绍的 SwiftlyJSON 是一个用来处理 JSON 数据解析的第三方库。

说到 JSON 相信大家都很熟悉,我们平时开发几乎都离不开 JSON 数据的处理。

iOS 为我们提供了解析 JSON 的库 NSJSONSerialization,我们看看使用标准库的处理方法:

let JSONObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil)

if let statusesArray = JSONObject as? [AnyObject],
   let status = statusesArray[0] as? [String: AnyObject],
   let user = status["user"] as? [String: AnyObject],
   let username = user["name"] as? String {
    // Finally we got the username
}

嗯,看起来可以用,但是不是感觉处理起来还是有点繁琐呢?

如果遇到使用 OptionalChaining 的情况就会变得更加混乱:

let JSONObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil)

if let username = (((JSONObject as? [AnyObject])?[0] as? [String: AnyObject])?["user"] as? [String: AnyObject])?["name"] as? String {
    // What a disaster
}

这一连串的 as 转换和问号解包,让人感觉很混乱吧。

这就是 SwiftyJSON 这个库要解决的问题了。我们再来看一下使用 SwiftyJSON 来处理这个解析的代码:

let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
  //Now you got your value
}

是不是马上简单很多了。无论是可读性还是逻辑的清晰性都有了极大的提升。

并且您也不用担心错误处理和 Optional 解包的问题,SwiftlyJSON 已经帮您处理这个问题了:

let json = JSON(data: dataFromNetworking)
if let userName = json[999999]["wrong_key"]["wrong_name"].string {
    //Calm down, take it easy, the ".string" property still produces the correct Optional String type with safety
} else {
    //Print the error
    print(json[999999]["wrong_key"]["wrong_name"])
}

关于 SwiftyJSON 更详细的内容,可以查看它的 Github 主页:
https://github.com/SwiftyJSON/SwiftyJSON

更多精彩内容可关注微信公众号:
swift-cafe

SwiftCafe 快报 - 使用 SwiftyJSON 处理 JSON 解析_第2张图片

你可能感兴趣的:(SwiftCafe 快报 - 使用 SwiftyJSON 处理 JSON 解析)