【问题标题】:Ruby getting deeply nested JSON API dataRuby 获取深度嵌套的 JSON API 数据
【发布时间】:2012-09-16 11:48:02
【问题描述】:

我有一个从 World Weather Online API 获得响应的 rails 应用程序。我正在使用 rest-client gem,响应是 JSON 格式。

我使用以下方法解析响应:

parsed_response = JSON.parse(response)

parsed_response 显然是一个哈希。

我需要的数据是一个散列内的字符串,一个数组内的一个散列内的另一个数组内的另一个散列内的另一个散列内的另一个散列。

最内层的嵌套散列在["hourly"] 内部,这是一个由8 个散列组成的数组,每个散列有20 个键,拥有各种天气参数的字符串值。数组中的每个哈希值都是一天中不同的时间(预测是每三个小时一次,3*8 = 24 小时)。

例如,如果我想要晚上 9 点的膨胀高度(以米为单位),我可以通过以下调用找到它:

@swell_height = parsed_data["data"]["weather"][0]["hourly"][7]["swellHeight_m"]

数组中第7个元素对应"time" => "2100"的地方

虽然我绝对可以使用它,但我很好奇是否有更直接的方法来访问我的数据,比如如果它是一个数据库表,我可以使用活动记录,例如:

@swell_height = parsed_data.swellHeight_m.where(:time => "2100")

【问题讨论】:

    标签: ruby-on-rails ruby json api hash


    【解决方案1】:

    您可能想查看JSONPath。它完全符合您的需要。它的语法与 XPath 非常相似,但 JSONPath 适用于 JSON 数据(很明显)。

    有一个 Ruby 实现:https://github.com/joshbuddy/jsonpath

    我个人在每个需要测试 JSON 响应的项目​​中都使用它。

    【讨论】:

    • 我怎样才能从这里找到“selected” - "children"=> [{"id"=>"10", "text"=>"New Arrivals", "state"=>{ “打开”=>真,“选择”=>假}}
    猜你喜欢
    • 2014-11-08
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多