【发布时间】:2021-02-25 22:33:40
【问题描述】:
我试图在 Ruby 中将 CSV 转换为 JSON 时保留换行符。 我有一个看起来像这样的 csv:
EMAIL, VALUE
some_email@email.com, value1
another_email@email.com, value2
yet_another_email@email.com, value3
...
我需要将其解析为 JSON,但保留行结构,使其最终形成一个 .json 文件,如下所示 - 必须有换行符:
{"EMAIL":"some_email@email.com","vars":{"VALUE":"val1"}}
{"EMAIL":"another_email@email.com","vars":{"VALUE":"val2"}}
{"EMAIL":"yet_another_email@email.com","vars":{"VALUE":"val3"}}
这是我目前的 Ruby 代码:
temp_json = Tempfile.new
File.open("#{temp_json.path}","w") do |f|
CSV.foreach('test.csv', headers: :first_row, liberal_parsing: true ).each do |row|
data = {
EMAIL: => row.fields[0],
vars: => {
VALUE: => row.fields[1]
}
}
f.write(data.to_json)
end
end
但是,这只是创建了一个文件,其中每个元素都在一行中,没有换行符,如下所示: {"EMAIL":"some_email@email.com","vars":{"VALUE":"val1"}}{"EMAIL":"another_email@email.com","vars":{"VALUE":" val2"}}{"EMAIL":"yet_another_email@email.com","vars":{"VALUE":"val3"}}
有谁知道实现这一点的方法吗? 谢谢!
【问题讨论】:
-
您是否在寻找
JSON.pretty_generate(x)而不是x.to_json?