#概要
アウトプット用に、学習した内容を紹介していきます。
昨日はRubyでtsvをcsvに変換しましたが、
本日はtsvをjsonに変換するお話です。
#環境
Mac OS Mojave 10.14.6
Ruby 2.5.3
エディタ VSCode
#tsvをjsonに変換
以下のタブ区切りテキストをjsonファイルに変換します。
meibo.txt
john m 18
paul m 20
alice f 15
dabid m 17
jasmin f 17
ファイルの変換に用いたコードが以下。
tsvtojson.rb
require 'json'
hash_array = []
# dump用の配列hash_arrayにデータを格納
File.foreach('meibo.txt') do |line|
person = line.chomp.split("\t")
hash = {
'name' => person[0],
'gender' => person[1],
'age' => person[2]
}
hash_array << hash
end
# jsonへ出力
File.open('meibo.json', 'w') do |file|
JSON.dump(hash_array, file)
end
ファイルに対して一行ずつの処理を行うにはforeachを使うのが良いです(コメントで教えていただきました)。このループの中で一行ずつ内容をhash_arrayに格納していきます。
全て格納し終えたら、最後にJSON.dump(hash_array, file)でjsonファイルに出力します。