无法将jsonArray元素转换为整数

do{ let resultJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions()) let arrayJSON = resultJSON as! NSArray let success:NSInteger = arrayJSON["success"] as! NSInteger if (success == 1 ) .... 

json的数据是从服务器的响应,我试图将其转换为整数,但我得到的对话错误。

这是一个工作的例子(在我的机器上testing)

 let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in if let error = error { print(error) } if let data = data{ print("data =\(data)") do{ let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) let resultDictionary = resultJSON as? NSDictionary let success = resultDictionary!["success"]! let successInteger = success as! Int print("success = \(success)") if successInteger == 1 { print("yes") }else{ print("no") } }catch _{ print("Received not-well-formatted JSON") } } if let response = response { print("url = \(response.URL!)") print("response = \(response)") let httpResponse = response as! NSHTTPURLResponse print("response code = \(httpResponse.statusCode)") } }) task.resume() 

答案是:

 { "error_message" : "No User", "success" : 0} 

注意

你说你的服务器的答复如下:

 { "error_message" = "No User"; success = 0; } 

不是一个有效的JSON,你应该改正它匹配我给你的JSON

您将resultJSONNSArray但是您可以通过对“成功”进行下标来尝试将其用作字典。

如果响应是字典,则将结果作为字典进行转换:

 let result = resultJSON as! NSDictionary let success = result["success"] as! NSInteger 

如果响应是一个字典数组,那么首先在下标之前select其中一个项目。

 let arrayJSON = resultJSON as! NSArray let success = arrayJSON[0]["success"] as! NSInteger 

注意:如果可能,更喜欢使用Swift的键入数组而不是Foundation的NSArray和NSDictionary。 你也应该避免强制铸造! if let ... = ... as? ...安全的if let ... = ... as? ...安全地打开可选项更好if let ... = ... as? ... if let ... = ... as? ...或任何其他机制。

更新

这是一个例子:

 do { let resultJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions()) var success = 0 if let dictJSON = resultJSON as? [String:AnyObject] { if let successInteger = dictJSON["success"] as? Int { success = successInteger } else { print("no 'success' key in the dictionary, or 'success' was not compatible with Int") } } else { print("unknown JSON problem") } if success == 1 { // yay! } else { // nope } 

在这个例子中,我正在使用Swift字典[String:AnyObject]而不是一个NSDictionary,我使用的是Swift整数Int而不是Foundation的NSIntegerif let不是强迫,我也是在types化。