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

イベント

2017/12/05(火)
Design Thinking Square