2015-10-30 41 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()