目次(まとめ)

◾️ テキストファイルを読み込んで、ハッシュを作成する

◾️ ハッシュから、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"]