我一直在尝试从我的一个数据库中提取数据,以显示在我正在使用swift 2.1和Xcode制作的移动应用程序上。我已经建立了一个mysql数据库,并在我的服务器上运行了一个php脚本,该脚本从该数据库中回声JSON编码的数据。
我的swift应用程序可以将数据发布到PHP脚本并将数据发送到数据库,但我无法从PHP脚本中获取数据以在应用程序上显示。我已经尝试了大多数方法,但它们似乎不适用于最新版本的swift。
这是我的代码:
func dataOfJson(url: String) -> NSArray {
let data = NSData(contentsOfURL: NSURL(string: url)!)
let result: NSArray = []
do {
let json = try (NSJSONSerialization.JSONObjectWithData(data!, options: [NSJSONReadingOptions.MutableContainers, NSJSONReadingOptions.AllowFragments]) as? NSDictionary)
if let parseJSON = json {
let resultValue = parseJSON["id"] as? String?
print(resultValue)
}
} catch let error as NSError {
print(error.localizedDescription)
}
return result
}
我的PHP文件的响应结果如下:
[{"id":"alex"},{"id":"jeff"},{"id":"jack"}]
如何提取JSON数据并将其存储在swift变量中?
试试这个
func dataOfJson(url: String) -> Array<Dictionary<String,String>>? {
let data = NSData(contentsOfURL: NSURL(string: url)!)
do {
let jsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: [NSJSONReadingOptions.MutableContainers, NSJSONReadingOptions.AllowFragments]) as? Array<Dictionary<String, String>>
print("json := '(jsonArray)")
return jsonArray;
} catch let error as NSError {
print(error.localizedDescription)
return nil;
}
}
我已经用下面的代码进行了测试,运行良好
let string = "[{'"id'":'"alex'"},{'"id'":'"jeff'"},{'"id'":'"jack'"}]";
let data = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let jsonArray = try NSJSONSerialization.JSONObjectWithData(data!, options: [NSJSONReadingOptions.MutableContainers, NSJSONReadingOptions.AllowFragments]) as? Array<Dictionary<String, String>>
print("json := '(jsonArray)")
for object in jsonArray! {
print("id := '(object["id"])");
}