【问题标题】:How to parse JSON response in Ruby如何在 Ruby 中解析 JSON 响应
【发布时间】:2017-04-27 21:36:59
【问题描述】:

最终目标是成为返回机场天气的聊天机器人的一部分。

使用 import.io,我构建了一个端点来查询我将提供此响应的天气服务:

{"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}

我似乎遇到了两个问题。我该怎么做:

  1. 拉取每个字段并将其写入自己的变量中
  2. 忽略响应中的“文本”修饰符。

【问题讨论】:

标签: json ruby


【解决方案1】:

如果你得到一个响应对象,你可能想要做类似的事情

parsed_json = JSON.parse(response.body)

然后你可以做parsed_json[:some_field]之类的事情

【讨论】:

    【解决方案2】:

    简单的答案是:

    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
    

    互联网和 Stack Overflow 上广泛介绍了如何遍历哈希,因此请四处搜索,看看你能找到什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多