3
我得到了下面的Ruby对象返回一个值(从查询使用garb gem的谷歌Analytics(分析)API,来自于README.md有显示的示例通话,Exits.results(profile, :filters => {:page_path.eql => '/'})
)提取从OpenStruct Ruby对象
> data.results
=> [#<OpenStruct page_path="/", exits="3706", pageviews="10440">]
我想提取浏览量值(10440),但无法弄清楚如何去做。我看到我的对象,data.results
是长度1
的array
类,但data.first是OpenStruct
类带有返回值,看起来几乎相同:
irb(main):140:0> data.results.class
=> Array
irb(main):141:0> data.results.length
=> 1
irb(main):142:0> data.first
=> #<OpenStruct page_path="/", exits="3706", pageviews="10440">
irb(main):143:0> data.first.class
=> OpenStruct
而data
本身似乎是一个被称为ResultsSet
自定义的返回类型:
irb(main):144:0> data.class
=> Garb::ResultSet
irb(main):145:0> data
=> #<Garb::ResultSet:0x00000002411070 @results=[#<OpenStruct page_path="/", exits="3706", pageviews="10440">], @total_results=1, @sampled=false>
irb(main):146:0>
很多数据结构,但不知道如何得到我想要的值。我收集OpenStruct
是有关哈希,所以我想data.first["pageviews"]
会做到这一点,
NoMethodError: undefined method `[]' for #<OpenStruct page_path="/", exits="3706", pageviews="10440">
from (irb):146
from /usr/bin/irb:12:in `<main>'
同时data.first.keys
回报nil
。 。?不知道如何让我的数据出来,(短长度-1磁盘阵列,data.results
转换为字符串,并使用grep,这似乎疯狂解析的任何想法
是的,工作!非常感谢。不知道我完全理解逻辑,但非常有帮助! – cynewulf
这是一个功能,改变了红宝石1.9什么? – chicks
它不应该... – Yossi