RubyでJSONを自在に操る
Ruby実践でJSON操作を始める
近年、Webサービスやマイクロサービスの増加に伴い、データ交換の標準フォーマットとしてJSONが広く採用されています。Rubyでは標準ライブラリにJSONモジュールが組み込まれており、簡単にJSONの生成・解析が可能です。この記事では、Ruby実践でJSON操作を行うための基本的な手順と、API通信でのデータ交換例を紹介します。
require 'json' と基本構文
まずはJSONモジュールを読み込むために、スクリプトの先頭で require 'json' を記述します。これにより、JSON.parse や JSON.generate などのメソッドが使用可能になります。
require 'json'
JSONモジュールは Ruby 2.0 以降に標準で付属しているため、追加の gem をインストールする必要はありません。
JSON.parseでパース
JSON文字列を Ruby のオブジェクトに変換するには JSON.parse を使用します。戻り値はハッシュや配列など、JSON の構造に応じた Ruby オブジェクトです。
json_str = '{"name":"太郎","age":30,"skills":["Ruby","JavaScript"]}'
data = JSON.parse(json_str)
puts data['name'] # => 太郎
puts data['skills'].first # => Ruby
パース時にオプションを渡すことで、キーをシンボル化したり、数値を文字列として扱うなどのカスタマイズも可能です。
JSON.generate と to_json
Ruby オブジェクトを JSON 文字列に変換するには JSON.generate を使います。さらに、Ruby の標準クラスに to_json メソッドが追加されているため、オブジェクトに直接呼び出すこともできます。
hash = { title: '記事', views: 1234 }
json_str = JSON.generate(hash)
# もしくは
json_str = hash.to_json
puts json_str # => {"title":"記事","views":1234}
配列やネストされた構造も同様に扱えます。to_json は ActiveSupport などの拡張ライブラリがある場合、さらに便利なオプションが追加されることがあります。
データ交換とAPI通信の実例
実際に外部 API と通信する際は、HTTP クライアント(Net::HTTP, HTTParty, Faraday など)を使い、リクエストボディに JSON を送信し、レスポンスをパースします。以下は Net::HTTP を使った簡単な例です。
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse('https://api.example.com/users')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri, { 'Content-Type' => 'application/json' })
request.body = { name: '花子', age: 25 }.to_json
response = http.request(request)
data = JSON.parse(response.body)
puts data['id'] # => 42
このように、JSON.parse と to_json を組み合わせることで、データ交換がスムーズに行えます。API 仕様書に従い、必要なヘッダーや認証情報を付与することも忘れずに。
まとめ
Ruby実践でJSON操作を行う際は、まず require 'json' でモジュールを読み込み、JSON.parse でパース、JSON.generate または to_json で生成します。これらを組み合わせることで、データ交換や API 通信が簡潔に実装できます。ぜひ、日々の開発で活用してみてください。
コメント
コメントを投稿