我需要在CSV文件中转换哈希数组.我发现的各种方法涉及在数组中插入哈希值:
class Array
def to_csv(csv_filename="hash.csv")
require 'csv'
CSV.open(csv_filename, "wb") do |csv|
csv << first.keys # adds the attributes name on the first line
self.each do |hash|
csv << hash.values
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方法要求数组中的每个元素都是完整的,例如当我有这个数组时,它甚至不会返回有效的csv:
myarray = [
{foo: 1, bar: 2, baz: 3},
{bar: 2, baz: 3},
{foo: 2, bar: 4, baz: 9, zab: 44}
]
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来创建一个找到所有可能的标头的csv,并按正确的顺序分配值,在需要的地方添加空格.
hir*_*lau 11
关于什么:
class Array
def to_csv(csv_filename="hash.csv")
require 'csv'
# Get all unique keys into an array:
keys = self.flat_map(&:keys).uniq
CSV.open(csv_filename, "wb") do |csv|
csv << keys
self.each do |hash|
# fetch values at keys location, inserting null if not found.
csv << hash.values_at(*keys)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)