RubyでJSON形式のファイルを扱うときに役立つ関数をいくつか紹介します。Rubyには標準ライブラリにJSONモジュールがありますので、今回はこちらについて説明します。
JSON形式のファイルを読み込んでハッシュに変換する
JSON形式のファイルを読み込んでハッシュに変換するときはJSON.load()を使います。
sample.json
1 2 3 4 5 6 7 8 9 10 |
{ "Ocean": { "Squid":10, "Octopus":8 }, "Sky": { "Swallow":2, "Crow":2 } } |
上のsample.jsonファイルを読み込んでハッシュに変換してみます。
1 2 3 4 5 6 |
require 'json' File.open("sample.json") do |file| hash = JSON.load(file) p hash end |
実行結果
1 |
{"Ocean"=>{"Squid"=>10, "Octopus"=>8}, "Sky"=>{"Swallow"=>2, "Crow"=>2}} |
JSON形式の文字列からハッシュへ変換する
JSON形式の文字列をハッシュへ変換するのにはJSON.parse()を使用します。上述のJSON.load()を使用しても同様に変換できます。
1 2 3 4 5 |
require 'json' $str = '{ "Ocean": { "Squid":10, "Octopus":8 }' JSON.parse($str); p hoge |
実行結果
1 |
{"Ocean"=>{"Squid"=>10, "Octopus"=>8}} |
ハッシュからJSON形式の文字列へ変換する
ハッシュからJSON形式の文字列に変換するときはJSON.generate()を使います。
1 2 3 4 |
require 'json' str = JSON.generate({ "Ocean" => { "Squid" => 10, "Octopus" =>8 }}) puts str |
ハッシュからJSONファイルへ書き込む
ハッシュからJSON形式に変換してファイルに保存するときはJSON.dump()を使うと簡単にできます。JSON.dump()は内部的には第1引数を渡してJSON.generate()が呼び出されています。
1 2 3 4 5 6 |
require 'json' File.open("sample2.json", 'w') do |file| hash = { "Ocean" => { "Squid" => 10, "Octopus" =>8 }} str = JSON.dump(hash, file) end |
sample2.json
1 |
{"Ocean":{"Squid":10,"Octopus":8}} |
ハッシュをJSON形式にきれいに整形する
JSON.pretty_generate()を使えば簡単に改行やインデントを整えることができます。
1 2 3 4 5 |
require 'json' hash = { "Ocean" => { "Squid" => 10, "Octopus" =>8 }} json_str = JSON.pretty_generate(hash) puts json_str |
実行結果
1 2 3 4 5 6 7 8 9 10 |
{ "Ocean": { "Squid": 10, "Octopus": 8 }, "Sky": { "Swallow": 2, "Crow": 2 } } |