所以我想向一个特定的API发送请求,该API应该返回一个JSON文件。
我正在使用Alamofire来获取JSON对象:
dataFromAPI : JSON
Alamofire.request(.GET, myURL).responseJSON { (_, _, data) -> Void in
dataFromAPI = JSON(data)
}
我的问题是数据是AnyObject的数组,JSON函数需要AnyObject类型。如何将一个变换为另一个或解决问题?
答案 0 :(得分:3)
不确定我是否收到了您的问题,但会尝试为您提供我如何操作的示例。 将代码更改为您的案例。
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,然后我尝试将其转换为我的自定义模型类。
如果我错过了解问题,请纠正我。 :)
答案 1 :(得分:0)
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)!)")
}
}
}