JSON with Ruby – Encode, Decode, and Use JSON Easily (2025 Guide)
Introduction – Why Use JSON with Ruby?
JSON (JavaScript Object Notation) is a lightweight and popular format for storing and exchanging data across web services, APIs, and frontend-backend applications. Ruby includes built-in support for JSON through the json library, allowing developers to parse JSON strings, convert Ruby objects to JSON, and integrate with web APIs seamlessly.
In this guide, you’ll learn:
- How to encode/decode JSON in Ruby
- Handling JSON with hashes, arrays, and classes
- Reading from and writing to JSON files
- Best practices and real-world usage
Loading Ruby’s JSON Module
Before working with JSON, require the built-in module:
require 'json'
No extra gems are needed—json is included in Ruby’s standard library.
Encoding Ruby Objects to JSON
Example – Convert Hash to JSON
require 'json'
user = {
name: "Alice",
age: 30,
email: "alice@example.com"
}
json_data = user.to_json
puts json_data
Output:
{"name":"Alice","age":30,"email":"alice@example.com"}
✔️ Use to_json on Ruby hashes and arrays
✔️ Automatically converts types like strings, numbers, booleans
Decoding JSON to Ruby Objects
Example – Parse JSON String into Hash
require 'json'
json_str = '{"name":"Bob","age":25,"admin":false}'
data = JSON.parse(json_str)
puts data["name"] # Output: Bob
✔️ JSON.parse() converts JSON string into a Ruby hash or array
Reading and Writing JSON Files
Writing JSON to a File
require 'json'
user = { name: "Carol", age: 22 }
File.open("user.json", "w") do |f|
f.write(user.to_json)
end
Reading JSON from a File
require 'json'
file = File.read("user.json")
data = JSON.parse(file)
puts data["age"] # Output: 22
Working with Ruby Classes and JSON
Convert Object to JSON
require 'json'
class Product
attr_accessor :name, :price
def initialize(name, price)
@name = name
@price = price
end
def to_json(*_args)
{ name: @name, price: @price }.to_json
end
end
item = Product.new("Laptop", 1299.99)
puts item.to_json
✔️ Custom to_json method allows JSON encoding for objects
Best Practices for JSON in Ruby
| Practice | Why It Matters |
|---|---|
Use JSON.parse with rescue | Prevents crashes from invalid JSON |
| Validate input before parsing | Avoids security and formatting issues |
Use symbols consistently (symbolize_names) | Makes code cleaner with keyword arguments |
Useful JSON Options
JSON.parse(json_str, symbolize_names: true)
Converts keys from strings to symbols:{"name" => "Alice"} → {name: "Alice"}
Summary – Recap & Next Steps
JSON support in Ruby is clean, fast, and part of the standard library—making it ideal for APIs, web apps, file storage, and integrations.
Key Takeaways:
- Use
to_jsonto encode Ruby objects - Use
JSON.parse()to decode JSON strings - Read/write JSON files using standard file methods
- Add custom serialization for Ruby classes
Real-world use:
Used in Rails APIs, configuration systems, HTTP clients, background workers, and frontend-backend sync.
FAQ – JSON with Ruby
How do I convert a Ruby hash to JSON?
Use hash.to_json.
How do I parse a JSON string into a Ruby object?
Use JSON.parse(json_string).
Can I parse JSON with symbolized keys in Ruby?
Yes, pass symbolize_names: true to JSON.parse.
Is JSON built into Ruby?
Yes. The json module is part of Ruby’s standard library—no gems needed.
Share Now :
