如何使用Ruby将此CSV转换为JSON?

时间:2015-08-07 01:25:47

标签: ruby

我正在尝试使用Ruby将CSV文件转换为JSON。在使用Ruby(或任何语言)时,我非常,非常,非常绿色,所以答案可能需要为我愚蠢。将它放在JSON中对我来说似乎是最合理的解决方案,因为我理解在分配与响应中的属性相等的变量时如何使用JSON。如果有更好的方法,请随时教我。

我的CSV格式如下:

Header1,Header,Header3
ValueX,ValueY,ValueZ

我希望能够使用这些数据来说明这一点:

对于标题后第1行中的每个ValueX,检查valueZ是否为> VALUE年。如果是,请执行此操作,如果不这样做的话。我理解如何执行if语句,现在如何将我的信息解析为变量/数组。

这里有什么想法吗?

2 个答案:

答案 0 :(得分:2)

require 'csv'
require 'json'
rows = []
CSV.foreach('a.csv', headers: true, converters: :all) do |row|
  rows << row.to_hash
end
puts rows.to_json
# => [{"Header1":"ValueX","Header":"ValueY","Header3":"ValueZ"}]

答案 1 :(得分:1)

Here is a first pointer:

require 'csv'
data = CSV.read('your_file.csv', { :col_sep => ',' }

Now you should have the data in data; you can test in irb.

I don't entirely understand the question:

if z > y
  # do this
else
  # do that
end

For JSON, you should be able to do JSON.parse().

I am not sure what target format JSON requires, probably a Hash.

You can populate your hash with the dataset from the CVS:

hash = Hash.new
hash[key_goes_here] = value_here