我是
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)
- }