目次(まとめ)
◾️ テキストファイルを読み込んで、ハッシュを作成する
◾️ ハッシュから、JSONファイルを出力する
◾️ JSONファイルを読み込んで、ハッシュを作成する
こんにちは、みっちゃんです。
今回の記事では「テキストファイルからハッシュを作りたい」「ハッシュからJSONファイルを作りたい」「JSONファイルを読み込みたい」という方向けに、Rubyを使ったJSON形式の取り扱いについて解説します。
テキストファイルを読み込んで、ハッシュを作成する
ここでは、以下のようなタブ区切りのテキストファイル(test.txt)を使います。
$ cat test.txt
A 90
B 50
C 56
D 84
E 49
このファイルを読み込み、第一列目をキーとして第二列目のデータを取り出すハッシュ(hash)を作成する、Rubyスクリプト(test.rb)を以下のように作成します。
infile = open("test.txt", "r") #読み込みファイルの指定
hash = Hash.new() #"hash" をハッシュ変数として指定
while line = infile.gets #ファイルの読み込み(1行ずつ)
sp_line = line.split("\t") #1行ずつタブ(\t)で区切る
key = sp_line[0].chomp #第一列目をキーにする
vh = hash[key] #ハッシュを使ってキーから取り出す変数を "vh" とする
if vh.nil? #"vh" がない場合の処理
vh = Array.new() #"vh" を配列として初期化
hash[key] = vh
end
vh << sp_line[1].chomp #値として、第二列目の値を入れる
end
infile.close #読み込みファイルを閉じる
このスクリプトにより、例えば、以下のように、"A" をキーに指定すると、"90" という値を含む配列を出力することができます。
p hash["A"]
#=> ["90"]
ハッシュから、JSONファイルを出力する
RubyでJSONファイルを取り扱うためには、以下のように宣言する必要があります。
require "json"
上で作成したハッシュ "hash" をJSON形式の変数に変換するには、以下のように実行すればOKです。
json = hash.to_json
この変数を、以下のように、JSONファイルとして出力することができます。
outfile = open("test.json", "w") #書き込みファイルの指定
outfile.print(json) #変数 "json" の書き込み
outfile.close #書き込みファイルを閉じる
JSONファイルを読み込んで、ハッシュを作成する
JSONファイルは、以下のように実行すると、ハッシュ(hash_2)として読み込むことができます。
infile = open("test.json", "r")
hash_2 = JSON.load(infile)
infile.close
変数のクラスを確認するためには、以下のように実行します。
p hash_2.class
#=> Hash
ちなみに、ハッシュのキーを取り出すには、以下のように実行します。
p hash_2.keys
#=> ["A", "B", "C", "D", "E"]