How to Parse JSON in Ruby

← All guides

Ruby's standard library includes json. Require it, then use JSON.parse to read and JSON.generate or JSON.pretty_generate to write.

Parse a JSON string

JSON.parse returns hashes and arrays. Pass symbolize_names: true for symbol keys.

ruby
require "json"

text = '{"name":"Ada","roles":["admin","dev"]}'
data = JSON.parse(text)
puts data["name"]        # Ada

sym = JSON.parse(text, symbolize_names: true)
puts sym[:name]          # Ada

Generate JSON

JSON.generate produces compact JSON; JSON.pretty_generate indents it.

ruby
obj = { name: "Ada", active: true }
puts JSON.generate(obj)         # compact
puts JSON.pretty_generate(obj)  # indented

Handle parse errors

Invalid JSON raises JSON::ParserError.

ruby
begin
  data = JSON.parse(text)
rescue JSON::ParserError => e
  puts "Invalid JSON: #{e.message}"
end

Frequently Asked Questions

Pass symbolize_names: true to JSON.parse, or call .transform_keys(&:to_sym) on the result.

No. The json library is part of the standard library — just require "json".

Use JSON.pretty_generate(object) for indented, human-readable output.

Related Tools