質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Ruby

    7959questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Google Maps Direction APIから得たjsonデータをhashに変換したい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 103

coffeeET

score 1

ruby上でGoogle Maps Direction APIを叩き,経路情報を取得し,徒歩での移動時間を取得したいと考えています.
そこで,下のコードでjsonをhashにparseしましたが,深い箇所がparse出来ず,参照出来なくて困っています.
legs以下の値をruby上で取得する方法をご教授願えると幸いです.

# APIから得たjsonデータをhashにparse
data = JSON.parse(response.body)
puts data["routes"]
puts data["routes"]["legs"] # Error : no implicit conversion of String into Integer
# parse後
"geocoded_waypoints"=>[
  {
    "geocoder_status"=>"OK",
    "place_id"=>"ChIJC6fjlY3mAGARSshZ6CLIrhs",
    "types"=>[
      "establishment",
      "point_of_interest",
      "train_station",
      "transit_station"
    ]
  },
  {
    "geocoder_status"=>"OK",
    "place_id"=>"ChIJ67mcWJLmAGARrUf0FlFtm7w",
    "types"=>[
      "department_store",
      "establishment",
      "point_of_interest",
      "store"
    ]
  }
],
"routes"=>[
  {
    "bounds"=>{
      "northeast"=>{
        "lat"=>34.7029859,
        "lng"=>135.4985137
      },
      "southwest"=>{
        "lat"=>34.7023575,
        "lng"=>135.4959768
      }
    },
    "copyrights"=>"地図データ ©2018 Google, ZENRIN",
    "legs"=>[
      {
        "distance"=>{
          "text"=>"0.3 km",
          "value"=>343
        },
        "duration"=>{
          "text"=>"5分",
          "value"=>303
{
  "geocoded_waypoints": [
    {
      "geocoder_status": "OK",
      "place_id": "ChIJC6fjlY3mAGARSshZ6CLIrhs",
      "types": [
        "establishment",
        "point_of_interest",
        "train_station",
        "transit_station"
      ]
    },
    {
      "geocoder_status": "OK",
      "place_id": "ChIJ67mcWJLmAGARrUf0FlFtm7w",
      "types": [
        "department_store",
        "establishment",
        "point_of_interest",
        "store"
      ]
    }
  ],
  "routes": [
    {
      "bounds": {
        "northeast": {
          "lat": 34.7029859,
          "lng": 135.4985137
        },
        "southwest": {
          "lat": 34.7023575,
          "lng": 135.4959768
        }
      },
      "copyrights": "地図データ ©2018 Google, ZENRIN",
      "legs": [
        {
          "distance": {
            "text": "0.3 km",
            "value": 343
          },
          "duration": {
            "text": "5分",
            "value": 303
          },
〜以下略〜
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

hashの中に一部Arrayが混ざっていたようでした.

例をあげます.
hashにparseした後,["routes"]["legs"]["duration"]["value"]に参照するときには下のコードで参照できました.

puts data["routes"][0]["legs"][0]["duration"]["value"]

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    7959questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。