簡體   English   中英

使用 Ruby JSON Gem 解析 Google Places API

[英]Parsing Google Places API with Ruby JSON Gem

首先非常感謝這個網站上的每個人,我每天都在使用它並學習負載。 但是,我有點卡在一個問題上。

我想要做的是將 Google Places API 解析為我自己的數組格式。 我正在使用 JSON 來執行此操作。 如果我在命令提示符下使用以下命令,我可以獲得正確的響應:(為了隱私,我更改了一些內容)

curl -e http://www.yoursire.com 'https://maps.googleapis.com/maps/api/place/search/json?location=51.50401607915134,-0.10931970886235831&radius=500&types=food&sensor=false&key=AIzaSyCj58SthZHL75a5asdadsNCtbB6fdDe8'

如果我把這個想法帶入 ruby 我已經嘗試了一些不同的方法來獲取數據。 首先,我嘗試執行以下操作

require 'rubygems'
require 'open-uri'

result = open("https://maps.googleapis.com/maps/api/place/search/json?location=51.50401607915134,-0.10931970886235831&radius=500&types=food&sensor=false&key=AIzaSyCj58SthZHLsdfsdf5sY0sNCtbB6fdDe8'").read

puts result

我收到如下所示的 hash 錯誤:

{ "html_attributions" : [ ],"results" : [ ], "status" : "REQUEST_DENIED" }

我在本地運行它,這可能是一個問題,因為curl -e ,但我總是得到一個錯誤

我一直在嘗試的第二個選項是:

require 'ruby-gems'
require 'open-uri'
require 'json'

result = JSON.parse(open("https://maps.googleapis.com/maps/api/place/details/json?location=51.50401607915134,-0.10931970886235831&radius=500&types=food&sensor=false&key=AIzaSyCj58SthZHL75a5RQd5sY0sNCtbB6fdDe8").read)

puts result

現在我什至無法運行這個,因為我得到了錯誤:

./json.rb:5: undefined method `search' for nil:NilClass (NoMethodError)
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from places.rb:3

所以我什至無法讓 JSON gem 工作? 我正在嘗試在代碼中本地運行它,使其工作,然后使用 Rails 將想法移植到 web,但我想知道它是如何工作的(學習等......)我想我知道如何處理數據一旦我擁有它,但目前獲取它並存儲它對我來說似乎有點問題。 我將不勝感激任何人可以給我的任何幫助......即使它是“閱讀這個”。

請注意,我最后只使用puts result作為測試,看看它是否有效!

謝謝

查理

錯誤來自包含行。 您確定您的 Ruby 安裝有正確的 JSON gem 嗎? 嘗試刪除所有代碼,只require 'json' 如果您仍然收到錯誤(我認為您會),那么這就是您的問題。

對於實際的 JSON 解析行,我建議這樣做 - 它更干凈,更慣用:

url = 'https://maps.googleapis.com/maps/api/place/details/json?location=51.50401607915134,-0.10931970886235831&radius=500&types=food&sensor=false&key=AIzaSyCj58SthZHL75a5RQd5sY0sNCtbB6fdDe8'
result = open(url) do |file|
  JSON.parse(file.read)
end

對於未來的讀者:檢查這個超級簡單的客戶端(基於法拉第): https://gist.github.com/joost/e149404f645f33ba1939

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM