0

これは実行からの出力ですputs get_account_entry.inspect

[[{:value=>"8b08e26a-6d35-7140-9e41-4c5b4612c146", :name=>"id"}, {:value=>"Typhoon Corporation", :name=>"name"}]]

たとえば、:name => "id"の値を抽出するにはどうすればよいですか?もともとはハッシュのようなものだと思っていたので、get_account_entry [id]で結果が出ますが、詳しく調べてみると意味がありません。

しかし、どうすれば値を取得できますか?

チャックは私を正しい道に導いたが、それでも助けが必要である:

  puts get_account_entry[0].map {|hash| [hash[:name], hash[:value]] }

これは、rubyコンソールの出力です。

> id
> 8b08e26a-6d35-7140-9e41-4c5b4612c146
> name 
> Typhoon Corporation
4

3 に答える 3

2

あなたは右に近いです。これは、ハッシュの配列を含む配列であり、それらが一緒になって一種のハッシュのような構造を形成します。対応する名前「id」の値を取得するには、get_entries[0].find {|field| field[:name] == 'id'}[:value]. イニシャル[0]は無意味な外側の配列の中に私たちを連れて行き:name、次にエントリ「id」を持つハッシュを見つける必要があり、そのエントリの値を求めます:value

この名前と値のデータ構造を通常のハッシュに変換する場合は、Hash[get_entries[0].map {|hash| [hash[:name], hash[:value]] }].

于 2010-08-06T05:49:43.257 に答える
0

最も外側の角括弧 "[]" は、このシリアル化が配列を表すことを示しています。

get_entries[0][id] (または二重括弧なので get_entries[0 ][ 0][id]) のようなものを試しましたか?

于 2010-08-06T04:57:32.867 に答える
0

これが私がアプローチする方法です。

a= [[{:value=>"8b08e26a-6d35-7140-9e41-4c5b4612c146", :name=>"id"}, {:value=>"Typhoon Corporation", :name=>"name"}]]

a[0].each do |hash|
  hash.each_pair do |k,v|
    puts v
  end
end

お役に立てれば。

于 2010-08-06T05:21:08.870 に答える