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
}
}