【问题标题】:TypeError Parsing Ruby Array of Hashes [closed]TypeError 解析 Ruby 哈希数组 [关闭]
【发布时间】:2022-01-10 16:09:11
【问题描述】:

我有一个 Ruby 哈希数组,我正在尝试对其进行迭代,以便我可以按键解析值。

forms = {"forms":[{"id":123,"name":"John","created_at":"2021-11-23T21:41:17.000Z"},{"id":456,"name":"Joe","created_at":"2021-11-21T05:17:44.000Z"}]}

forms.each do |form|
  puts form ## {:id=>123, :name=>"John", :created_at=>"2021-11-23T21:41:17.000Z"}
  puts form["id"]
end

这会产生以下错误:

main.rb:4:in `[]': no implicit conversion of String into Integer (TypeError)

我承认我是一个大的 Ruby 菜鸟,但无法弄清楚这一点。我也试过puts form[:id]puts form[":id"] 无济于事。

注意:我无法控制分配给forms 变量的哈希数组。这是我从外部 API 调用返回的结果。

【问题讨论】:

  • puts form ## {:id=>123, 这不是输出的。输出为[:forms, [{:id=>123, ...

标签: ruby parsing ruby-hash


【解决方案1】:

您的formsHash。如果你对Hash 执行each,它会传递到each key & value pair 块。

forms.each do |key, value|
  p key # => :forms
  p value # => [{....}]
  p value.map { |v| v[:id] }
end

还有这个,以防forms 总是有forms 键(不会改变)

forms[:forms].map { |v| v[:id] }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2018-09-25
    • 2017-06-09
    • 2021-11-03
    • 2015-01-06
    相关资源
    最近更新 更多