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

如何使用Ruby将此CSV转换为JSON?,ruby,Ruby,我正在尝试使用Ruby将CSV文件转换为JSON。当我使用Ruby(或任何语言)时,我非常、非常、绿色,所以可能需要为我简化答案。对我来说,将其放在JSON中似乎是最合理的解决方案,因为我知道在为响应中的属性分配相等的变量时如何使用JSON。如果有更好的方法,请随意教我 我的CSV格式如下: Header1,Header,Header3 ValueX,ValueY,ValueZ 我想用这些数据来说明以下几点: 对于标题后第1行中的每个ValueX,检查valueZ是否>ValueY。如果是,就

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

我的CSV格式如下:

Header1,Header,Header3
ValueX,ValueY,ValueZ
我想用这些数据来说明以下几点:

对于标题后第1行中的每个ValueX,检查valueZ是否>ValueY。如果是,就这样做,如果不是,就那样做。我知道如何执行if语句,刚才知道如何将信息解析为变量/数组


这里有什么想法吗?

这里是第一个指针:

require 'csv'
data = CSV.read('your_file.csv', { :col_sep => ',' }
现在您应该在
data
中拥有数据;你可以在irb考试

我不完全理解这个问题:

if z > y
  # do this
else
  # do that
end
对于JSON,您应该能够执行
JSON.parse()

我不确定JSON需要什么目标格式,可能是散列格式

您可以使用CVS中的数据集填充哈希:

hash = Hash.new
hash[key_goes_here] = value_here
需要“csv”
需要“json”
行=[]
CSV.foreach('a.CSV',headers:true,converters::all)do |行|
行[{“Header1”:“ValueX”,“Header”:“ValueY”,“Header3”:“ValueZ”}]

str.split(',')
生成一个逗号分隔字段数组,并将
str.to_i
str.to_f
分别转换为整数和浮点。如果你能完成If和赋值,这应该能让你达到目的。@Arkku:CSV通常不能被
split(',')
解析;例如,
Bogart,“孩子,看你了”
会给你三个字段,而不是正确的两个。@Amadan是的,没错,我有点假设数据看起来像OP的例子,这是一个简单的一次使用数据的程序,但问题当然不包括这些信息,因此,如果这是针对“真正的程序”,则更通用的CSV解析器更好欢迎来到堆栈溢出。让我们看看你的努力是很重要的。我们可以帮助您修复代码,但如果我们在编写代码时不知道您的代码是什么样子的,那么我们将生成与您的代码不相似的内容,这可能会导致您在将其固定到位时出错。将CSV转换为JSON并不难,但您很容易遇到可伸缩性问题,因为CSV文件可能很大。
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"}]