Skip to content
vic

ohler55/oj.json
{
"createdAt": "2012-02-17T09:30:32Z",
"defaultBranch": "develop",
"description": "Optimized JSON",
"fullName": "ohler55/oj",
"homepage": "http://www.ohler.com/oj",
"language": "C",
"name": "oj",
"pushedAt": "2025-11-25T05:09:58Z",
"stargazersCount": 3183,
"topics": [
"c",
"json",
"json-parser",
"marshaller",
"oj-gem",
"rails",
"ruby",
"ruby-json-parser"
],
"updatedAt": "2025-11-25T05:10:02Z",
"url": "https://github.com/ohler55/oj"
}

CI Gem Gem TideLift

A fast JSON parser and Object marshaller as a Ruby gem.

Version 3.13 is out with a much faster parser (Oj::Parser) and option isolation.

require 'oj'
h = { 'one' => 1, 'array' => [ true, false ] }
json = Oj.dump(h)
# json =
# {
# "one":1,
# "array":[
# true,
# false
# ]
# }
h2 = Oj.load(json)
puts "Same? #{h == h2}"
# true
gem install oj

or in Bundler:

gem 'oj'

See the Quickstart sections of the [Rails]!(pages/Rails.md) and [json]!(pages/JsonGem.md) docs.

Code which uses multi_json will automatically prefer Oj if it is installed.

Get supported Oj with a Tidelift Subscription. Security updates are supported.

For more details on options, modes, advanced features, and more follow these links.

  • [{file:Options.md}]!(pages/Options.md) for parse and dump options.
  • [{file:Modes.md}]!(pages/Modes.md) for details on modes for strict JSON compliance, mimicking the JSON gem, and mimicking Rails and ActiveSupport behavior.
  • [{file:JsonGem.md}]!(pages/JsonGem.md) includes more details on json gem compatibility and use.
  • [{file:Rails.md}]!(pages/Rails.md) includes more details on Rails and ActiveSupport compatibility and use.
  • [{file:Custom.md}]!(pages/Custom.md) includes more details on Custom mode.
  • [{file:Encoding.md}]!(pages/Encoding.md) describes the :object encoding format.
  • [{file:Compatibility.md}]!(pages/Compatibility.md) lists current compatibility with Rubys and Rails.
  • [{file:Advanced.md}]!(pages/Advanced.md) for fast parser and marshalling features.
  • [{file:Security.md}]!(pages/Security.md) for security considerations.
  • [{file:InstallOptions.md}]!(pages/InstallOptions.md) for install option.

See [{file:CHANGELOG.md}]!(CHANGELOG.md) and [{file:RELEASE_NOTES.md}]!(RELEASE_NOTES.md)

Follow @peterohler on Twitter for announcements and news about the Oj gem.

  • Provide a Pull Request off the develop branch.
  • Report a bug
  • Suggest an idea
  • Code is now formatted with the clang-format tool with the configuration file in the root of the repo.