使用 SwiftyJSON 处理 JSON 响应

Posted

技术标签:

【中文标题】使用 SwiftyJSON 处理 JSON 响应【英文标题】:handle JSON response with SwiftyJSON 【发布时间】:2014-09-29 17:39:15 【问题描述】:

我尝试了很长时间,但我不知道如何解析响应。这是我的代码:

    var jsonString:String = ""

    Alamofire
        .request(.GET, url + "/HMServer/rest/administration/version")
        .responseJSON 
            (request, response, data, error) -> Void in

            let json = JSON(object: data!)

            //here I want to do something with parsing
    

我使用 Alamofire 执行的请求并返回 JSON 响应。响应如下:

[message: [SERVER_VERSION: 0.1, INTERFACE_VERSION: 0.1], type: success]

我想将所有元素保存在字符串中并返回。如何解析保存在 let let json 中的 JSON 响应?我尝试使用Alamofire-SwiftJSON,但代码不起作用。我发现的所有示例都太旧了,因为几天前 SwiftyJSON 代码被重构了。

谢谢!

【问题讨论】:

为什么不使用 NSJSONSerilization?这要容易得多,并得到 Apple 的支持。 对我来说,代码不像 alamofire 和 swiftyjson 那样简单。你有一个简单的例子还是你知道一个好的教程? 我会给你一个例子,但首先要问一个问题:你显示的响应是在服务器响应之上还是解析版本之上? 这是来自alamofire的响应数据。如果我在上面的代码中执行 println(json),那么我会得到发布的响应。 【参考方案1】:

我已经解决了Alamofire-SwiftJSON 的问题, 但是您可以在 responseJSON 的闭包中自己完成,例如:

Alamofire.request(.GET, url + "/HMServer/rest/administration/version")
         .responseJSON  (request, response, data, error) -> Void in
            if error != nil 
                self.swiftyJSON = SwiftyJSON.JSON.Null(error)
             else if object != nil 
                self.swiftyJSON = SwiftyJSON.JSON(object: object!)
             else 
                self.swiftyJSON = SwiftyJSON.JSON.Null(nil)
            

以上代码不像Alamofire-SwiftJSON在全局队列中,初始化(AnyObject to SwiftyJSON)在主队列中运行。

【讨论】:

self.swiftyJSON 是什么类型的? 我解决了这个问题。现在在我的函数中,我返回整个 JSON 枚举。后来我像jsonReturn["message"]["HMSERVER_VERSION"].stringValue一样解析它。它为我运行 :)

以上是关于使用 SwiftyJSON 处理 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON 解析 JSON 响应

使用 SwiftyJSON 将 JSON 解析为结构

使用 SwiftyJSON iOS 解析 JSON 响应

使用 SwiftyJSON 解析 JSON 响应而不会崩溃

使用 SwiftyJSON 读取 JSON 响应的子节点

无法使用 Alamofire 和 SwiftyJSON 访问数组内部的 url,JSON 响应