如何在 IOS 上使用 Swift 解析 JSON,从 PHP 服务脚本发送?
Posted
技术标签:
【中文标题】如何在 IOS 上使用 Swift 解析 JSON,从 PHP 服务脚本发送?【英文标题】:How to Parse a JSON with Swift on IOS, sent from a PHP service script? 【发布时间】:2015-12-06 04:03:34 【问题描述】:我在使用 swift 在 ios 上解析从 php 脚本发送的 JSON 时遇到问题。我这周刚开始学习 IOS 开发,之前也从未使用过 JSON,因此在正确解析此内容方面的任何帮助将不胜感激。我将 mysql 查询的结果作为 JSON 发送到应用程序。这是我的 swift 代码和错误日志,您可以在其中看到 http 服务接收到的对象。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
let secondViewController:VC2 = segue.destinationViewController as! VC2
let myUrl = NSURL(string: "myscriptaddress");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";
let postString = "condition=" + String(currentval);
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
secondViewController.mystring = "getting ready"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
data, response, error in
guard data != nil else
print("no data found: \(error)")
return
do
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary
print("Success")
else
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: \(jsonStr)")
catch let parseError
print(parseError)
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error can't parse JSON: '\(jsonStr)'")
task.resume()
现在是错误日志:
Error could not parse JSON: Optional(["unidad":"sanfrancisco","capacidad":"15","uso":"5","telefono":"num","unidad":"pediatricouniversitario","capacidad":"15","uso":"5","telefono":"num","unidad":"sanjorge","capacidad":"15","uso":"7","telefono":"num","unidad":"himacaguas","capacidad":"20","uso":"4","telefono":"num","unidad":"himabayamon","capacidad":"20","uso":"8","telefono":"num","unidad":"sanlucas","capacidad":"10","uso":"8","telefono":"num","unidad":"auxiliomutuo","capacidad":"15","uso":"11","telefono":"num"])
【问题讨论】:
【参考方案1】:它无法将 JSON 数据解包为字典类型。提供的 JSON 字符串是一个对象数组。
在你的 JSONObjectWithData 调用中试试这个:
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String : AnyObject]]
【讨论】:
以上是关于如何在 IOS 上使用 Swift 解析 JSON,从 PHP 服务脚本发送?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:使用 AFNetworking 解析响应 json
如何以正确的方式在 IOS SWIFT 3 中解析 Google 距离矩阵 API JSON
如何在 Swift 5 中使用 Alamofire 解析 json