スキップしてメイン コンテンツに移動

RubyでJSONを自在に操る

RubyでJSONを自在に操る

Ruby実践でJSON操作を始める

近年、Webサービスやマイクロサービスの増加に伴い、データ交換の標準フォーマットとしてJSONが広く採用されています。Rubyでは標準ライブラリにJSONモジュールが組み込まれており、簡単にJSONの生成・解析が可能です。この記事では、Ruby実践でJSON操作を行うための基本的な手順と、API通信でのデータ交換例を紹介します。

require 'json' と基本構文

まずはJSONモジュールを読み込むために、スクリプトの先頭で require 'json' を記述します。これにより、JSON.parseJSON.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 通信が簡潔に実装できます。ぜひ、日々の開発で活用してみてください。

この記事はAIによって作成されました。

コメント