如何使用Swifty Json将POST请求中的JSON数据保存到字典中?

我能够在控制台中打印JSON数据,看起来像这样

{ "created_at" : "2016-07-21 20:46:53", "name" : "PB Admin", "id" : 1, "updated_at" : "2016-07-21 12:46:53", "lname" : "Admin", "access_lvl" : 1, "email" : "admin@admin.com", "fname" : "PB" } 

,但无法将其保存到字典中。

POST请求的方法

 private func makeHTTPPostRequest(path: String, body: NSDictionary) { let request = NSMutableURLRequest(URL: NSURL(string: path)!) // Set the method to POST request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") request.HTTPMethod = "POST" do { // Set the POST body for the request let jsonBody = try! NSJSONSerialization.dataWithJSONObject(body, options: []) request.HTTPBody = jsonBody let session = NSURLSession.sharedSession() let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in let json:JSON = JSON(data: data!) print(json)//print on console //i need to get the json data from here, but for some reason it would skip //this method self.parseJSON(json) }) task.resume() } catch { // Create your personal error //onCompletion(nil, nil) } } 

这个方法应该将json数据保存到字典中

 private func parseJSON(json: JSON) { for(_, object) in json { let createdAt = object["created_at"].stringValue let name = object["name"].stringValue let id = object["id"].stringValue let updatedAt = object["updated_at"].stringValue let lName = object["lname"].stringValue let accessLvl = object["access_lvl"].stringValue let email = object["email"].stringValue let fname = object["fname"].stringValue let obj = ["createdAt":createdAt, "name":name, "id":id, "updatedAt":updatedAt, "lName":lName, "accessLvl":accessLvl, "email":email, "fname":fname ] objects.append(obj)//wherein objects is a string dictionary } } 

每当我debugging代码,即使整个处理完成,对象字典始终为空。

您可以将您的JSON数据转换为NSData,这样您就可以轻松地从NSData获取数据而不是JSON。

 public class func jsonToNSData(json: AnyObject) -> NSData?{ return NSJSONSerialization.dataWithJSONObject(json, options: .allZeros, error: nil) } 

然后你可以创build一个返回NSDictionary的函数:

 func parseJSON(data: NSData) -> NSDictionary{ var dic: NSDictionary! do { boardsDictionary = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary } catch let error as NSError { print(error.localizedDescription) print("Error could not parse JSON data, it's null maybe?!!") } //'\(jsonStr)' return dic } 

最后一个:创build你的字典

 let dic = parseJSON(jsonToNSData(YourJsonData)) as! NSDictionary 

希望能帮助到你。

让jsonDictionary =尝试! NSJSONSerialization.JSONObjectWithData(data !,选项:NSJSONReadingOptions.MutableContainers)as! 的NSDictionary