如何在Swift中使用JSON的Alamofire请求之后在AnyObject中转换<anyobject>响应?

时间:2015-09-18 10:06:51

标签: json swift alamofire

所以我想向一个特定的API发送请求,该API应该返回一个JSON文件。

我正在使用Alamofire来获取JSON对象:

dataFromAPI : JSON
Alamofire.request(.GET, myURL).responseJSON { (_, _, data) -> Void in
               dataFromAPI = JSON(data)
            }

我的问题是数据是AnyObject的数组,JSON函数需要AnyObject类型。如何将一个变换为另一个或解决问题?

2 个答案:

答案 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)!)")
            }
        }
    }