如何使用ruby解析api请求

时间:2016-12-20 21:05:55

标签: ruby-on-rails api

我正在学习如何在Rails上使用来自this yelp blogyelp github的Yelp API。我能够连接到Yelp服务并得到回复,但我不知道如何处理我得到的响应。

以下是我在Rails Console上所做的事情:

2.2.2 :057 >   response = client.search('los angeles', {limit: 2})
=> #<Yelp::Response::Search:0x007fff32edc2c0 @region=#<Yelp::Response::Model::Region:0x007fff35ddf6d0 @span=#<Yelp::Response::Model::RegionSpan:0x007fff35ddf450 @latitude_delta=0.04455494999999132, @longitude_delta=0.02209966000000918>, @center=#<Yelp::Response::Model::RegionCenter:0x007fff35ddf5e0 @latitude=34.08390635, @longitude=-118.3184503>>,...
  1. 那种格式是什么? this article说当我对Yelp进行API调用时,它会提供ruby对象,但我不确定#<Yelp::Response...是什么数据类型。我想我期待一个ruby数组/ json格式返回,如文章中所述: `

    搜索

    response = client.search('旧金山')

    response.businesses

    并[d业务1&gt;,&lt;业务2&gt;,...]

    response.businesses [0]。名称

    “Kim Makoi,DC”

    response.businesses [0] .rating

    5.0

  2. 如果我想从返回API中选择特定信息,请说display_addressneighborhood,我该怎么做? (这是同一API请求的结尾部分):

    ...@display_address=["6353 Yucca St", "Hollywood", "Los Angeles, CA 90028"], @geo_accuracy=8.0, @postal_code="90028", @country_code="US", @address=["6353 Yucca St"], @coordinate=#<Yelp::Response::Model::Coordinate:0x007fff35ddf7e8 @latitude=34.10413, @longitude=-118.32834>, @state_code="CA", @neighborhoods=["Hollywood"]>, @deals=nil, @gift_certificates=nil, @reviews=nil>]>

1 个答案:

答案 0 :(得分:1)

1。 如果您直接调用API(例如,来自cURL),那么您将获得JSON。

你正在使用Yelp gem,所以它有助于将JSON转换为ruby对象。如果您对构造对象感兴趣,可以查看gem在GitHub上进行转换的方式。

您应该能够像文章中所说的那样与该回复进行互动,即results.businesses应该为您提供一系列商家。

  1. 更具体地说,看起来你可以做类似的事情:
  2. results.businesses[0].display_address获取找到的第一个商家的显示地址 results.businesses[0].neighborhoods是与同一业务相关的所有社区的数组。