2015-10-30 40 views
0

在我的項目中,我需要從Web中獲取JSON數據。同時,我會將其轉換爲String並將其存儲在我的核心數據中。Swift:獲取JSON數據並在本地更新

假設我從網上獲取這個JSON數據。

enter image description here

我只需要幫助,以便讓JSON數據並轉換爲String Array。對不起,我對Swift2非常陌生,而且我只知道如何編碼到這裏。

var url: NSURL = NSURL(string: jsonUrl)! 
var request: NSURLRequest = NSURLRequest(URL: url) 
let queue:NSOperationQueue = NSOperationQueue() 

回答

0

在這裏,你走了,我的機器上測試了當地的網絡服務

let session = NSURLSession.sharedSession() 
     let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:8080/iOSServer/ios/helloworld/getJSONArray")!) 
     request.HTTPMethod = "GET" // change it to post if you want 

     let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in 

      if let error = error { 
       print(error) 
      } 
      if let data = data{ 
       do{ 
        let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) 
        let resultArray = resultJSON as? NSArray 
        for jsonObjectString in resultArray!{ 
         let platform = jsonObjectString["platform"]! 
         let favorite = jsonObjectString["favorite"]! 
         let language = jsonObjectString["language"]! 
         print("platform = \(platform!)") 
         print("favorite = \(favorite!)") 
         print("language = \(language!)") 
        } 

       }catch _{ 
        print("Received not-well-formatted JSON") 
       } 

      } 
      if let response = response { 
       let httpResponse = response as! NSHTTPURLResponse 
       print("response code = \(httpResponse.statusCode)") 
      } 



     }) 
     task.resume() 
    } 

如你所見,for循環中,我打印自帶形成服務器的值,你可以隨心所欲地做任何事情。

我認爲JSON密鑰是:platformfavoritelanguage 您可以更改它們。 (請照顧大寫字母和小寫字母)

+0

非常感謝! –

+0

嗨,雖然我仍然在同一個項目上工作,但我注意到在調試過程中它退出程序後'let task = session.dataTaskWithRequest(request,completionHandler:{(data,response,error)in',它執行的地方''task.resume()'不通過'If'語句。 由於這個問題,我沒有提取並顯示在我的UITableView。 –

+0

@JoeLeong請創建一個新問題,描述新問題併發送給我鏈接 –

0
let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "url")!, completionHandler: { (data, response, error) -> Void in 
    if error != nil { 
     //do something with error 
     return 
    } 

    do { 
     if let data = data, jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as? [[String:AnyObject]] { 

      for object in jsonData { 
       var object = Object() 
       if let platform = object["platform"] as? String { 
        object.platform = platform 
       } 
      } 
     } 
    } catch { 
     //Handle error 
    } 
}) 
task.resume()