我是
swift的新手,我从请求中得到一个json,但我无法解析.我正在尝试获取json信息并创建在mapkit上使用注释的坐标
下面是我回来的json
{ coord = [ { islocationactive = 1; latitude = "37.8037522"; locationid = 1; locationsubtitle = Danville; locationtitle = "Schreiner's Home"; longitude = "121.9871216"; },{ islocationactive = 1; latitude = "37.8191921"; locationid = 2; locationsubtitle = "Elementary School"; locationtitle = Montair; longitude = "-122.0071005"; },{ islocationactive = 1; latitude = "37.8186077"; locationid = 3; locationsubtitle = "Americas Eats"; locationtitle = "Chaus Restaurant"; longitude = "-121.999046"; },{ islocationactive = 1; latitude = "37.7789669"; locationid = 4; locationsubtitle = "Cheer & Dance"; locationtitle = Valley; longitude = "-121.9829908"; } ] }
我尝试解析的代码就是这个
let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in //exiting if there is some error if error != nil{ print("error is \(error)") return; } //parsing the response do { //converting resonse to NSDictionary var teamJSON: NSDictionary! teamJSON = try JSONSerialization.jsonObject(with: data!,options: .mutableContainers) as? NSDictionary print(teamJSON) //getting the JSON array teams from the response let liquidLocations: NSArray = teamJSON["coord"] as! NSArray //looping through all the json objects in the array teams for i in 0 ..< liquidLocations.count{ //getting the data at each index // let teamId:Int = liquidLocations[i]["locationid"] as! Int! } } catch { print(error) } } //executing the task task.resume()
但不是我尝试工作.我想得到纬度,经度并在地图上创建一个注释
谢谢您的帮助
解决方法
您可以尝试使用与@Niko Adrianus Yuwono相同的代码,但进行了一些更改,因此您将获得teamid作为整数
do { let data : NSData = NSData() // change your data variable as you get from webservice response guard let teamJSON = try NSJSONSerialization.JSONObjectWithData(data,options: []) as? [String: Any],let liquidLocations = teamJSON["coord"] as? [[String: Any]] else { return } //looping through all the json objects in the array teams for i in 0 ..< liquidLocations.count{ let teamId: Int = (liquidLocations[i]["locationid"] as! NSString).integerValue print(teamId) } } catch { print(error) }