Sha*_*h c 17 ruby csv json ruby-on-rails-3
我想使用ruby将.json文件转换为.csv文件.请帮我这样做.
还提出了实现这一目标的任何工具.
Ale*_*tie 30
尝试这样的事情:
require 'csv'
require 'json'
csv_string = CSV.generate do |csv|
JSON.parse(File.open("foo.json").read).each do |hash|
csv << hash.values
end
end
puts csv_string
Run Code Online (Sandbox Code Playgroud)
要实际写入文件...
require 'csv'
require 'json'
CSV.open("your_csv.csv", "w") do |csv| #open new file for write
JSON.parse(File.open("your_json.json").read).each do |hash| #open json to parse
csv << hash.values #write value to file
end
end
Run Code Online (Sandbox Code Playgroud)
我认为在ruby中将JSON转换为CSV的简单方法是使用json2csv ruby gem.
PS:我可能有偏见,因为我是这个的作者.
运行命令
json2csv convert data/sample.json
Run Code Online (Sandbox Code Playgroud)
输入文件
在这种特殊情况下,它将转换为以下json:
cat data/sample.json
{
"12345": {
"Firstname": "Joe",
"Lastname": "Doe",
"Address": {
"Street": "#2140 Taylor Street, 94133",
"City": "San Francisco",
"Details": {
"note": "Pool available"
}
}
},
"45678": {
"Firstname": "Jack",
"Lastname": "Plumber",
"Address": {
"Street": "#111 Sutter St, 94104",
"City": "San Francisco",
"Details": {
"note": "Korean Deli near to main entrance"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
产量
cat data/sample.json.csv
id,Firstname,Lastname,Address.Street,Address.City,Address.Details.note
12345,Joe,Doe,"#2140 Taylor Street, 94133",San Francisco,Pool available
45678,Jack,Plumber,"#111 Sutter St, 94104",San Francisco,Korean Deli near to main entrance
Run Code Online (Sandbox Code Playgroud)