如何解析此JSON?
{
"telefon":"05538690671"
}
我的代码:
let url = NSURL(string: "http://localhost.192.168.1.40.xip.io:8888/store1.php")
//fetching the data from the url
URLSession.shared.dataTask(with: (url as URL?)!, completionHandler: {(data, response, error) -> Void in
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary {
//printing the json in console
print(jsonObj!.value(forKey: "telefon")!)
抱歉我的英文
答案 0 :(得分:0)
使用Alamofire(https://github.com/Alamofire/Alamofire)获取数据。
将Alamofire添加到您的项目中。
import UIKit
import Alamofire
typealias DownloadComplete = () -> ()
class YourClassName {
private var _telefon: String!
var telefon: String {
if _telefon == nil {
_telefon = ""
}
return _telefon
}
func downloadDetails(completed: @escaping DownloadComplete) {
let currentURL = URL(string: "http://localhost.192.168.1.40.xip.io:8888/store1.php")!
Alamofire.request(currentURL).responseJSON { response in
let result = response.result
if let dict = result.value as? Dictionary<String, AnyObject> {
if let telefon = dict["telefon"] as? String {
self._telefon = telefon
}
}
}
completed()
}
}
答案 1 :(得分:0)
我清理了一些东西,删除了NS内容并使用guard
保护了结果。
let url = URL(string: "http://localhost.192.168.1.40.xip.io:8888/store1.php")!
URLSession.shared.dataTask(with: url) { data, _, _ in
guard let data = data else { return }
guard let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) else { return }
guard let jsonObj = json as? [String: Any] else { return }
guard let telefon = jsonObj["telefon"] as? String else { return }
print(telefon)
}
多一点调试。
let url = URL(string: "http://localhost.192.168.1.40.xip.io:8888/store1.php")!
URLSession.shared.dataTask(with: url) { data, _, _ in
guard let data = data, !data.isEmpty else {
print("Error: data is nil or empty")
return
}
guard let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) else {
print("Error: data contains no JSON")
return
}
guard let jsonObj = json as? [String: Any] else {
print("Error: JSON is not a dictionary")
return
}
guard let telefon = jsonObj["telefon"] as? String else {
print("Error: Object has no 'telefon' key")
return
}
print(telefon)
}