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