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