在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?
Posted
技术标签:
【中文标题】在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?【英文标题】:How to convert <AnyObject> response in AnyObject after an Alamofire request with JSON in Swift? 【发布时间】:2015-09-18 10:06:51 【问题描述】:所以我想向应该返回 JSON 文件的特定 API 发送请求。
我正在使用 Alamofire 来获取 JSON 对象:
dataFromAPI : JSON
Alamofire.request(.GET, myURL).responseJSON (_, _, data) -> Void in
dataFromAPI = JSON(data)
我的问题是数据是一个 AnyObject 数组,而 JSON 函数需要一个 AnyObject 类型。如何将一个转换为另一个或解决问题?
【问题讨论】:
【参考方案1】:不确定我是否收到了您的问题,但会尝试为您提供一个示例,说明我是如何做到的。 根据您的情况更改代码。
Alamofire.request(.GET, myURL)
.validate(statusCode: 200..<300)
.validate(contentType: ["application/json"])
.responseJSON request, response, jsonResult in
switch jsonResult
case .Success:
if let data = jsonResult.value as? AnyObject
self.dataFromAPI = JSON(data)
case .Failure(_, let error):
print(error)
通常我不会对 AnyObject 进行解包,因为这没什么意义。
我通常解开到[String: AnyObject]
,因为我期待我的 API 中的 Dictionary,然后我尝试将其转换为我的自定义模型类。
如果我没有理解问题,请纠正我。 :)
【讨论】:
【参考方案2】:Alamofire 返回一个Result<AnyObject>
对象。您应该在提取 JSON 之前检查结果是成功还是失败:
Alamofire.request(.GET, myURL)
.responseJSON request, response, result in
switch result
case .Success(let JSON):
print("Success with JSON: \(JSON)")
case .Failure(let data, let error):
print("Request failed with error: \(error)")
if let data = data
print("Response data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)")
【讨论】:
以上是关于在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JSON.serializer 在 Swift 中解析 JSON
用于 PUT 方法的 Alamofire Content-Type application/json