【问题标题】:Access hash key value in array of hashes访问哈希数组中的哈希键值
【发布时间】:2013-03-22 20:15:18
【问题描述】:

我正在尝试获取:visits 值。我正在使用此代码来访问值

puts "#{my_hash[0]['metrics'][0][:visits]}"

并收到此错误:

undefined method `[]'

已编辑:这是puts my_hash的完整输出

{"xml"=>"<entry><id>ID_DATA</id><updated>2013-04-01T18:10:36.599Z</updated><title type=\"text\">ga:month=01 | ga:year=2013</title><link rel=\"alternate\" type=\"text/html\" href=\"http://www.google.com/analytics\" /><dxp:dimension name=\"ga:month\" value=\"01\" /><dxp:dimension name=\"ga:year\" value=\"2013\" /><dxp:metric name=\"ga:visits\" type=\"integer\" value=\"26248\" /><dxp:metric name=\"ga:bounces\" type=\"integer\" value=\"17174\" /></entry>", "id"=>"https://www.googleapis.com/analytics/v2.4/data?ids=ga:45872215&amp;ga:month=01&amp;ga:year=2013&amp;start-date=2013-01-01&amp;end-date=2013-03-28", "updated"=>Mon, 01 Apr 2013 18:10:36 +0000, "title"=>"ga:month=01 | ga:year=2013", "dimensions"=>[{:month=>"01"}, {:year=>"2013"}], "metrics"=>[{:visits=>26248.0}, {:bounces=>17174.0}]}
{"xml"=>"<entry><id>ID_DATA</id><updated>2013-04-01T18:10:36.599Z</updated><title type=\"text\">ga:month=02 | ga:year=2013</title><link rel=\"alternate\" type=\"text/html\" href=\"http://www.google.com/analytics\" /><dxp:dimension name=\"ga:month\" value=\"02\" /><dxp:dimension name=\"ga:year\" value=\"2013\" /><dxp:metric name=\"ga:visits\" type=\"integer\" value=\"24808\" /><dxp:metric name=\"ga:bounces\" type=\"integer\" value=\"16716\" /></entry>", "id"=>"https://www.googleapis.com/analytics/v2.4/data?ids=ga:45872215&amp;ga:month=02&amp;ga:year=2013&amp;start-date=2013-01-01&amp;end-date=2013-03-28", "updated"=>Mon, 01 Apr 2013 18:10:36 +0000, "title"=>"ga:month=02 | ga:year=2013", "dimensions"=>[{:month=>"02"}, {:year=>"2013"}], "metrics"=>[{:visits=>24808.0}, {:bounces=>16716.0}]}
{"xml"=>"<entry><id>ID_DATA</id><updated>2013-04-01T18:10:36.599Z</updated><title type=\"text\">ga:month=03 | ga:year=2013</title><link rel=\"alternate\" type=\"text/html\" href=\"http://www.google.com/analytics\" /><dxp:dimension name=\"ga:month\" value=\"03\" /><dxp:dimension name=\"ga:year\" value=\"2013\" /><dxp:metric name=\"ga:visits\" type=\"integer\" value=\"23556\" /><dxp:metric name=\"ga:bounces\" type=\"integer\" value=\"16261\" /></entry>", "id"=>"https://www.googleapis.com/analytics/v2.4/data?ids=ga:45872215&amp;ga:month=03&amp;ga:year=2013&amp;start-date=2013-01-01&amp;end-date=2013-03-28", "updated"=>Mon, 01 Apr 2013 18:10:36 +0000, "title"=>"ga:month=03 | ga:year=2013", "dimensions"=>[{:month=>"03"}, {:year=>"2013"}], "metrics"=>[{:visits=>23556.0}, {:bounces=>16261.0}]}

我正在使用 Gattica to_hash 方法。 https://github.com/chrisle/gattica

my_hash = data.to_h['points']

【问题讨论】:

  • my_hash 在哪里设置?
  • 当你 puts my_hash 而不是 puts "#{my_hash[0]['metrics'][0][:visits]}" 时输出什么?我想看看它的完整结构
  • 以上数据是puts my_hash的输出。
  • 以上数据无论怎么切片都是无效输出。
  • 我包含了完整的输出。我之前试图让它更容易阅读。

标签: ruby-on-rails xml hash


【解决方案1】:

文档给出了这个荒谬的咒语:

puts my_hash.first.metrics.detect { |metric| metric.key == :visits }.value

【讨论】:

  • 你可能会说我是一个完整的 RoR 新手。我不确定哪个更糟,是我的能力还是这个库。我可能只是尝试找到一个简单的 REST 客户端来代替
  • 这直接来自文档。我想是图书馆。他们在这里做了一些不完全标准的非常棘手的事情。如果你真的想继续走这条路,请在他们的 github 上打开一个问题:github.com/chrisle/gattica/issues
  • 感谢您的帮助。根据文档,这是正确的答案。
猜你喜欢
  • 1970-01-01
  • 2014-05-06
  • 2013-06-06
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2012-08-17
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多