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

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

    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),那么我会得到发布的响应。

标签: ios json swift alamofire


【解决方案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一样解析它。它为我运行 :)
猜你喜欢
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多