2016-12-12 10 views
2

最終的な目標は、空港の天気を返すチャットボットの一部です。 import.ioを使用してRubyでJSON応答を解析する方法

は、私はこの応答を提供し、私がいただきたいの気象サービスを照会するためのエンドポイントを構築しました:

{"extractorData"=> 
    {"url"=> 
    "https://www.aviationweather.gov/metar/data?ids=kokb&format=decoded&hours=0&taf=off&layout=on&date=0", 
    "resourceId"=>"66ca907842aabb6b08b8bc12049ad533", 
    "data"=> 
    [{"group"=> 
     [{"Timestamp"=>[{"text"=>"Data at: 2135 UTC 12 Dec 2016"}], 
     "Airport"=>[{"text"=>"KOKB (Oceanside Muni, CA, US)"}], 
     "FullText"=> 
      [{"text"=> 
      "KOKB 122052Z AUTO 24008KT 10SM CLR 18/13 A3006 RMK AO2 SLP179 T01780133 58021"}], 
     "Temperature"=>[{"text"=>"17.8°C (64°F)"}], 
     "Dewpoint"=>[{"text"=>"13.3°C (56°F) [RH = 75%]"}], 
     "Pressure"=> 
      [{"text"=> 
      "30.06 inches Hg (1018.0 mb) [Sea level pressure: 1017.9 mb]"}], 
     "Winds"=> 
      [{"text"=>"from the WSW (240 degrees) at 9 MPH (8 knots; 4.1 m/s)"}], 
     "Visibility"=>[{"text"=>"10 or more sm (16+ km)"}], 
     "Ceiling"=>[{"text"=>"at least 12,000 feet AGL"}], 
     "Clouds"=>[{"text"=>"sky clear below 12,000 feet AGL"}]}]}]}, 
"pageData"=> 
    {"resourceId"=>"66ca907842aabb6b08b8bc12049ad533", 
    "statusCode"=>200, 
    "timestamp"=>1481578559306}, 
"url"=> 
    "https://www.aviationweather.gov/metar/data?ids=kokb&format=decoded&hours=0&taf=off&layout=on&date=0", 
"runtimeConfigId"=>"2ddb288f-9e57-4b58-a690-1cd409f9edd3", 
"timestamp"=>1481579246454, 
"sequenceNumber"=>-1} 

私は2つの問題に実行しているように見えます。どうやってん:

  1. は、各フィールドを引くと、変数
  2. 、独自にそれを書くには、応答で、「テキスト」修飾子を無視します。
+1

よう

parsed_json = JSON.parse(response.body) 

のように次に、あなたが行うことができます事を何かをしたい場合があります://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html? –

+1

ようこそスタックオーバーフローへ。リンクされたページと "[mcve]"を含む "[ask]"をお読みください。あなたが持っている問題を実証するのに必要な最小限のコードを提示すれば、それは本当に私たちを助けてくれます。それがなければ、あなたは問題を解決しようとしていないように見え、あなたが私たちにあなたのためにそれを書いてほしいと思うようです。また、サンプルJSONを問題のデモンストレーションに必要最小限に減らしてください。 –

+0

http://stackoverflow.com/questions/5410682/parsing-a-json-string-in-ruby?rq=1も読むのがよいでしょう。 –

答えて

4

簡単な答えは次のとおりです。

require 'json' 

foo = JSON['{"a":1}'] 
foo # => {"a"=>1} 

JSONは、パラメータを見て、それが文字列や配列やハッシュのかどうかに基づいて、それを解析したり、それをシリアル化するのに十分なスマートです。上記の場合、それはハッシュにそれを解析しました。

その時点から、それはあなたが戻ったハッシュに飛び込むと、特定の値にアクセスするために、通常のRubyを取ります

foo = JSON['{"a":1, "b":[{"c":3}]}'] 
foo # => {"a"=>1, "b"=>[{"c"=>3}]} 
foo['b'][0]['c'] # => 3 

ので、インターネット上で広く覆われており、ここでは、スタックオーバーフローの上にされてどのようにハッシュを歩くする方法周りを検索し、あなたが何を見つけることができます参照してください。あなたは応答オブジェクトを取得している場合は

1

、あなたは、HTTPから `JSON.parse`を試してみました、見てみましょうparsed_json[:some_field]

関連する問題