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] 会产生结果,但仔细检查它并没有意义。

但是,我如何获得这些价值观?

Chuck 让我走上了正确的道路,但仍然需要帮助:

  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

你接近正确了。它是一个包含 Hash 数组的数组,它们一起形成了一种类似 Hash 的结构。要获取具有相应名称“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 回答