2016-11-20 223 views
0

遇到問題與REST API這裏是我的代碼:斯威夫特3 REST API斯威夫特3.不工作

func getData() 
{ 
    let urlString = "http://dataservice.accuweather.com/locations/v1/regions?apikey=QVU3TATgJEdRyojFze6zivdrmiln9XlA" 

    let config = URLSessionConfiguration.default // Session Configuration 
    let session = URLSession(configuration: config) // Load configuration into Session 
    let url = URL(string: urlString)! 

    let task = session.dataTask(with: url, completionHandler: { 
     (data, response, error) in 

     if error != nil { 

      print(error!.localizedDescription) 

     } else { 

      do { 
       print("in do block") 
       if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] 
       { 
        print("if condition is true") 
        //Implement your logic 
        print(json) 

       } else 
       { 
        print("Error in json serial") 
       } 

      } catch { 

       print("error in JSONSerialization") 

      } 


     } 

    }) 
    task.resume() 
} 

執行後,我可以看到下面的打印語句:

做阻止兒子 錯誤serial

這裏找不出JSON序列化命令有什麼問題。預期的響應是一個JSON數組。任何幫助,將不勝感激。 THX

+0

嘗試在嘗試序列化之前打印'data'的值 –

+0

'data'很好。轉換爲字符串並打印出來。可以看到我的json字符串。 – Sri

+0

嘗試將選項更改爲'.mutableContainers',並看看下面的內容:http://stackoverflow.com/a/39520853/4656341 – damiancesar

回答

0

更改 if let json = try JSONSerialization.jsonObject(with: data!, options:[]) as? [String: Any]

if let json = try JSONSerialization.jsonObject(with: data!, options:[]) as? [Any] 

怎麼一回事,因爲你已經是JSON 「jsonWithArrayRoot」 檢查這個進一步的細節。 https://developer.apple.com/swift/blog/?id=37