2013-04-14 85 views
1

我有散列的数组,像这样:哈希值的数组转换为csv

[{:id => 1, :name => "test", :status => "active", :desc => "test desc"}, {...}] 

我需要把它变成一个CSV文件。我意识到我可以使用CSV.generate(我使用ruby 1.9)来生成CSV。

to_a的哈希变成数组的第一个想法会是一个想法吗?

回答

0
arr = [{:id => 1, :name => "test", :status => "active", :desc => "test desc"},{:x => 4,:l => 7}] 
arr = arr.each_with_object([]) { |i,mem| mem << i.to_a }.flatten 
p arr 

输出:

[:id, 1, :name, "test", :status, "active", :desc, "test desc", :x, 4, :l, 7] 

UPDATE:

require 'csv' 
    arr = [{:id => 1, :name => "test", :status => "active", :desc => "test desc"},{:x => 4,:l => 7}] 
    arr = arr.each_with_object([]) { |i,mem| mem << i.to_a}.flatten.to_csv 
    p arr 

输出:

"id,1,name,test,status,active,desc,test desc,x,4,l,7\n" 
+0

如何将这个应用到我有给定'array'的情况?使用'map'遍历'hashes'并在其上调用'to_a'?然后在'to_csv'之后,我假设... –

+0

@yossarian查看我的更新。可以吗? –

+0

如果你可以用'to_csv'把它变成'csv',你的答案就会完成;} –