Rubyでjsonを扱う方法

Rubyでjsonを扱う方法

RubyでJSONを扱うには、標準ライブラリのjsonを使用する方法があります。
jsonライブラリを使用すると、RubyオブジェクトをJSON文字列に変換したり、JSON文字列をRubyオブジェクトにパースすることができます。

まず、jsonライブラリをインクルードします。

require 'json'

RubyオブジェクトをJSONに変換する

Rubyのハッシュや配列などのオブジェクトをJSON文字列に変換するには、JSON.generateまたはto_jsonメソッドを使用します。

require 'json'

# Rubyのハッシュを定義
ruby_hash = { name: "Alice", age: 30, city: "New York" }

# ハッシュをJSON文字列に変換
json_string = JSON.generate(ruby_hash)
# または
json_string = ruby_hash.to_json

puts json_string
# 出力: {"name":"Alice","age":30,"city":"New York"}

JSONをRubyオブジェクトに変換する

JSON文字列をRubyのハッシュや配列に変換するには、JSON.parseメソッドを使用します。

require 'json'

# JSON文字列を定義
json_string = '{"name":"Alice","age":30,"city":"New York"}'

# JSON文字列をRubyのハッシュに変換
ruby_hash = JSON.parse(json_string)

puts ruby_hash
# 出力: {"name"=>"Alice", "age"=>30, "city"=>"New York"}

# 変換されたハッシュのアクセス
puts ruby_hash["name"]  # 出力: Alice

オプションを使用して変換をカスタマイズする

JSON.parseやJSON.generateには、変換時にオプションを指定してカスタマイズすることもできます。

require 'json'

# 数値を文字列として扱う
json_string = '{"name":"Alice","age":"30","city":"New York"}'

ruby_hash = JSON.parse(json_string, symbolize_names: true)

puts ruby_hash
# 出力: {:name=>"Alice", :age=>"30", :city=>"New York"}

# ハッシュをJSON文字列に変換する際にインデントをつける
pretty_json = JSON.pretty_generate(ruby_hash)

puts pretty_json
# 出力:
# {
#   "name": "Alice",
#   "age": "30",
#   "city": "New York"
# }

このようにして、RubyでJSONデータを簡単に扱うことができます。