【问题标题】:Issue accessing hash inside of an array with Ruby使用 Ruby 访问数组内部的哈希问题
【发布时间】:2013-07-22 15:15:03
【问题描述】:

我已经着手学习 ruby​​/rails 和使用 Ruby 访问 API。我有一个简单的问题:

我正在发出一个返回 JSON 的 GET 请求。一旦我得到那个 JSON,我需要能够组织它,这样我就可以提取我想要的东西......但是,JSON 作为一个内部带有哈希的数组返回。因此, response.body 返回您在下面看到的内容。 Response[0] 为我提供了构成我的请求的所有 JSON,并省略了“13”。 Response[1] 只给了我 13 个。例如,如果没有所有多余的 JSON,我怎样才能获得每个调查的 id?

{ “调查”: [ { “状态”:“生活”, “回应”:2, “创建者”:“服务组织者”, "updated_at": "2013-07-10T22:16:23+00:00", "deploy_uri": "链接", "responses_url": "链接", “身份证”:221584, "name": "测试邮箱", "created_at": "2013-07-10T19:54:32+00:00", “uri”:“链接”, "report_url": "链接", “edit_url”:“链接” }, { “状态”:“生活”, “回应”:2, “创建者”:“服务组织者”, "updated_at": "2013-07-10T22:16:23+00:00", "deploy_uri": "链接", "responses_url": "链接", “身份证”:221584, "name": "测试邮箱", "created_at": "2013-07-10T19:54:32+00:00", “uri”:“链接”, "report_url": "链接", “edit_url”:“链接” } ], “总数”:13 }

【问题讨论】:

    标签: ruby arrays api hash httparty


    【解决方案1】:

    例如,收集 ids:

    survey_ids = response.body["surveys"].map { |s| s["id"] }
    

    为此,您必须根据 Dan Singerman 的评论使用 JSON.parse 将 JSON 字符串转换为 Ruby 格式。

    【讨论】:

    • 有道理,但我收到以下错误:“surveys”的未定义方法 `map':String (NoMethodError) 有什么想法吗?
    • 您提供的哈希实际上不是有效的 Ruby 哈希语法。我相应地更新了我的回复。
    • 首先使用 JSON.parse(response.body) 将 JSON 解析为 ruby​​ 哈希
    • 确实如此。我正在使用 HTTParty gem,并且了解到当我得到它时 JSON 已经准备好摇滚了。我使用 JSON.parse() 并且上面的代码运行良好。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 2013-10-08
    • 2012-08-30
    • 2013-04-18
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多