如何在Ruby中解析JSON响应
最终的目标是成为一个聊天机器人的一部分,返回机场的天气 使用import.io,我构建了一个端点来查询提供以下响应的天气服务:如何在Ruby中解析JSON响应,json,ruby,Json,Ruby,最终的目标是成为一个聊天机器人的一部分,返回机场的天气 使用import.io,我构建了一个端点来查询提供以下响应的天气服务: {"extractorData"=> {"url"=> "https://www.aviationweather.gov/metar/data?ids=kokb&format=decoded&hours=0&taf=off&layout=on&date=0", "resourceId"=>"66
{"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}
我似乎遇到了两个问题。我如何:
require 'json'
foo = JSON['{"a":1}']
foo # => {"a"=>1}
非常聪明,可以查看参数,并根据它是字符串、数组还是散列来解析或序列化它。在上面的例子中,它将其解析回散列
从这一点开始,普通Ruby需要深入到您得到的哈希中,并访问特定的值:
foo = JSON['{"a":1, "b":[{"c":3}]}']
foo # => {"a"=>1, "b"=>[{"c"=>3}]}
foo['b'][0]['c'] # => 3
如何遍历散列在internet和Stack Overflow上有广泛的介绍,因此请四处搜索,看看能找到什么。如果您得到一个响应对象,您可能需要执行以下操作
parsed_json = JSON.parse(response.body)
然后你可以做类似于
parsed_json[:some_field]
让我们看看,你有没有尝试json.parse
from?欢迎来到堆栈溢出。请阅读“包括链接页面和”。如果您向我们展示了演示您遇到的问题所需的最少代码,那么在询问时,它确实会帮助我们。如果没有这一点,看起来你还没有试图解决这个问题,你希望我们为你写这篇文章。此外,将示例JSON减少到演示问题所需的最小值。读一读也不错。