![](https://img.haomeiwen.com/i671916/1546edcb846748ca.png)
今天给大家介绍的 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
![]()
网友评论