Как использовать ruby ​​для анализа ответа json, заданного API-интерфейс foursquare - PullRequest
4 голосов
/ 21 сентября 2011

Я использую API Foursquare для поиска конкретного места. Я использую следующий URL: https://api.foursquare.com/v2/venues/venue_id?oauth_token=Access_token

Ответом сайта является JSON.

Затем я использую следующий код, пытаясь проанализировать этот ответ json, используя ruby:

require 'rest-open-uri'
require 'json'

url = 'https://api.foursquare.com/v2/venues/venue_id?oauth_token=Access_token'

buffer = open(url, "UserAgent" => "Ruby-Wget").read

result = JSON.parse(buffer)

Вот код ошибки, который я получаю:

C: /RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/net/http.rb: 678: в блоке connect': SSL_con nect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verif y failed (OpenSSL::SSL::SSLError) from C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/net/http.rb:678:in К в соединении из C: /RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/timeout.rb: 44: в timeou t' from C:/RailsInstaller/Ruby1.9.2/lib/ruby/1.9.1/timeout.rb:89:in timeou т '

Означает ли этот код ошибки, что я не могу открыть этот URL, потому что он начинается с "https"? Есть ли способ, которым я мог бы использовать, чтобы открыть этот URL и разобрать ответ JSON?

Спасибо, вперед!

Ответы [ 2 ]

16 голосов
/ 01 октября 2011

Это должно работать:

gem install httparty

, затем

require 'httparty'
require 'json'

response = HTTParty.get("https://api.foursquare.com/v2/venues/vid", 
:query => {:oauth_token => "abc"})

json = JSON.parse(response.body)
0 голосов
/ 05 мая 2013

RUBY чувствителен к регистру. требуют 'json' # json должен быть в нижнем регистре

JSON.parse ()
например JSON.parse (response.body) # Все JSON должны быть в верхнем регистре

...