Ruby CSV::Row 删除新行

Mar*_*yer 5 ruby csv

我正在打开一个 CSV 文件,然后将其转换为 JSON。\n除了 JSON 数据在字符串中包含字符之外,一切正常。据我通过打印并尝试咀嚼它可以看出,这些不是最后一个元素的一部分。当我打印它时,row它确实有\n

require 'csv'
require 'json'
def csv_to_json (tmpfile)
    JSON_ARRAY = Array.new
    CSV.foreach(tmpfile) do |row|
        print row[row.length - 1]
        if row[row.length - 1].chomp! == nil
            print row
        end
        JSON_ARRAY.push(row)
     end
     return JSON_ARRAY.to_json
 end
Run Code Online (Sandbox Code Playgroud)

返回时 JSON 看起来像这样

["field11,field12\n",
 "field21,field22\n"]
Run Code Online (Sandbox Code Playgroud)

如何删除这些换行符?

编辑:这些是CSV::Row对象,不支持字符串操作,例如chomporstrip

tmpfile格式为

field11,field21
field21,field22
Run Code Online (Sandbox Code Playgroud)

Mar*_*yer 0

map!我能够使用事后让它工作

json_array.map! { |row| row = row.to_s.chomp! }
Run Code Online (Sandbox Code Playgroud)

您也可以to_s.chomp!在循环内部进行操作。这对我来说不是一个选择,因为我需要常规对象在返回 json 之前进行一些计算