2015-09-18 68 views
1

所以我想發送一個請求到一個特定的API應該返回一個JSON文件。如何使用Swift中的JSON在Alamofire請求之後將AnyObject中的<AnyObject>響應轉換爲?

我爲了得到JSON對象使用Alamofire:

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

我的問題是,數據是AnyObject數組和JSON功能需要一個AnyObject類型。我怎樣才能將一個轉換成另一個或解決問題?

回答

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,然後嘗試將其轉換爲我的自定義模型類。

糾正我,如果我錯過了解這個問題。 :)

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)!)") 
      } 
     } 
    } 
相關問題