4

次の Ruby オブジェクトが返されます ( garb gemを使用した Google アナリティクス API へのクエリから、そこの README.md に示されているサンプル呼び出しに由来しますExits.results(profile, :filters => {:page_path.eql => '/'})) 。

> data.results
=> [#<OpenStruct page_path="/", exits="3706", pageviews="10440">]

pageviews 値 (10440) を抽出したいのですが、その方法がわかりません。私のオブジェクトは length のdata.resultsクラスですが、 data.first はほとんど同じように見える戻り値を持つクラスです。array1OpenStruct

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

whiledataそれ自体は、 と呼ばれるカスタムの戻り値の型のよう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 で解析する以外は、クレイジーに思えます。何かアイデアはありますか?

4

1 に答える 1

4

これを試してください:

data.first.pageviews
于 2013-01-14T07:14:46.250 に答える