首页 文章

如何使用Zomato API验证和解析数据

提问于
浏览
0

使用Zomato API密钥,您如何进行身份验证,搜索餐馆并解析数据?

3 回答

  • 0

    如果在Playground上运行代码,需要添加以下内容:

    import PlaygroundSupport 
    
    // [...] 
    
    PlaygroundPage.current.needsIndefiniteExecution = true
    
  • 2

    查看代码示例:

    let zomatoKey = "<Your API Key>"        
        let centerLatitude = 19.06558, centerLongitude = 72.86215 
        let urlString = "https://developers.zomato.com/api/v2.1/search?&lat=\(centerLatitude)&lon=\(centerLongitude)";
        let url = NSURL(string: urlString)
    
        if url != nil {
            let request = NSMutableURLRequest(URL: url!)
            request.HTTPMethod = "GET"
            request.addValue("application/json", forHTTPHeaderField: "Accept")
            request.addValue(zomatoKey, forHTTPHeaderField: "user_key")
    
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {(data, response, error) -> Void in
                if error == nil {
                    let httpResponse = response as! NSHTTPURLResponse!
    
                    if httpResponse.statusCode == 200 {
                        do {
                            if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary {
                                if let restaurants = json["restaurants"] as? [NSDictionary] {
                                    for rest in restaurants {
                                        var searchResult = [String:AnyObject?]()
                                        let restaurant = rest["restaurant"] as! NSDictionary
                                        print(restaurant["id"] as? NSString)
                                        print(restaurant["average_cost_for_two"] as? NSNumber)
                                        print(restaurant["cuisines"] as? String)
                                        print(restaurant["url"] as? String)
                                        print(restaurant["thumb"] as? String)
                                        if let location = restaurant["location"] as? NSDictionary {
                                            print(location["address"] as? String)
                                            print(location["city"] as? String)
                                            print((location["latitude"] as? NSString).doubleValue)
                                            print((location["longitude"] as? NSString).doubleValue)
                                        }
                                        print(restaurant["menu_url"] as? String)
                                        print(restaurant["name"] as? String )
                                        print(restaurant["phone_numbers"] as? String)
                                        if let user_rating = restaurant["user_rating"] as? NSDictionary {
                                            print(user_rating["aggregate_rating"] as? NSString)
                                            print(user_rating["rating_color"] as? String)
                                            print((user_rating["votes"] as? NSNumber)).doubleValue)
                                        }
                                    }
                                }
                            }
    
                        } catch {
                            print(error)
                        }
                    }
                }
            })
    
            task.resume()
        }
    
  • -1

    这是我的实现,假设你有一个类餐厅

    func getRestaurants() {
    
        let url = NSURL(string: zomatoURLString)
    
        if url != nil {
            let request = NSMutableURLRequest(URL: url!)
            request.HTTPMethod = "GET"
            request.addValue("application/json", forHTTPHeaderField: "Accept")
            request.addValue(zomatoKey, forHTTPHeaderField: "user_key")
    
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {
                (data,response,error) -> Void in
    
                if let error = error {
                    print(error)
                    return
                }
    
                //Parse Json data
    
                if let data = data {
                    self.restaurants = self.parseJsonData(data)
    
                    //reload table
                    NSOperationQueue.mainQueue().addOperationWithBlock({() -> Void in
                        self.tableView.reloadData()
                    })
    
                }
            })
    
            task.resume()
    
        }
    }
    
    
    func parseJsonData(data: NSData) -> [Restaurant] {
    
        do {
            let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
    
            //Parse JSON DATA
            let jsonRestaurants = jsonResult?["restaurants"] as! [AnyObject]
    
            for res in jsonRestaurants {
                let restaurant = Restaurant()
                let myRestaurant = res["restaurant"] as! NSDictionary
                restaurant.restaurantName = myRestaurant["name"] as! String
                restaurant.restaurantType = myRestaurant["cuisines"] as! String
                restaurant.restaurantImage = myRestaurant["thumb"] as! String
                let location = myRestaurant["location"] as! [String: AnyObject]
                restaurant.restaurantLocation = location["address"] as! String
                restaurants.append(restaurant)
            }
        } catch {
            print(error)
        }
        return restaurants
    }
    

相关问题