1

奇怪的问题标签,但仍然想问,因为即使看起来很容易,无论我尝试了什么,我都无法完成

我正在尝试从 Google Maps Directions API 给出的 URL 解析到点之间的持续时间。感谢我从这里收到的答案,我能够捕获 JSON 对象并获取持续时间对象,但是无论我做什么,我都无法从“持续时间”属性中获取内部值“文本”或“值”。

这是回应;

{
  "text" : "6 mins",
  "value" : 373
}

这是我在rails中编写的代码

@request = Net::HTTP.get(URI.parse('http://maps.googleapis.com/maps/api/directions/json?origin=40.983204,29.0216549&destination=40.99160908659266,29.02334690093994&sensor=false'))
    hash = JSON.parse @request
    duration = hash['routes'][0]['legs'][0]['duration']

    respond_to do |format|
    format.html {render :index}
    format.json {render json: duration}
    end

注意:当然,[0]['text']方法都试过了。

4

2 回答 2

1

作为第一件事,您需要将持续时间定义为实例变量以使其在您的视图中可用(如果这是您需要使用它的地方)

@duration = hash['routes'][0]['legs'][0]['duration']
于 2012-09-14T10:55:39.203 回答
0

duration["text"] 和 duration["value"] 不起作用?

    1.9.3p194 :001 > require 'net/http'
     => true 
    1.9.3p194 :002 > require 'json'
     => true 
    1.9.3p194 :003 > @request = Net::HTTP.get(URI.parse('http://maps.googleapis.com/maps/api/directions/json?origin=40.983204,29.0216549&destination=40.99160908659266,29.02334690093994&sensor=false'));
    1.9.3p194 :004 >   hash = JSON.parse @request;
    1.9.3p194 :005 >   duration = hash['routes'][0]['legs'][0]['duration']
     => {"text"=>"6 mins", "value"=>373} 
    1.9.3p194 :006 > duration["text"]
     => "6 mins" 
    1.9.3p194 :007 > duration["value"]
     => 373 
于 2012-09-14T12:13:38.583 回答