ohler55/oj
{ "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"}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}"# trueInstallation
Section titled “Installation”gem install ojor in Bundler:
gem 'oj'Rails and json quickstart
Section titled “Rails and json quickstart”See the Quickstart sections of the [Rails]!(pages/Rails.md) and [json]!(pages/JsonGem.md) docs.
multi_json
Section titled “multi_json”Code which uses multi_json will automatically prefer Oj if it is installed.
Support
Section titled “Support”Get supported Oj with a Tidelift Subscription. Security updates are supported.
Further Reading
Section titled “Further Reading”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.
Releases
Section titled “Releases”See [{file:CHANGELOG.md}]!(CHANGELOG.md) and [{file:RELEASE_NOTES.md}]!(RELEASE_NOTES.md)
-
Documentation: http://www.ohler.com/oj/doc, http://rubydoc.info/gems/oj
-
GitHub repo: https://github.com/ohler55/oj
-
RubyGems repo: https://rubygems.org/gems/oj
Follow @peterohler on Twitter for announcements and news about the Oj gem.
Performance Comparisons
Section titled “Performance Comparisons”-
Oj Strict Mode Performance compares Oj strict mode parser performance to other JSON parsers.
-
Oj Compat Mode Performance compares Oj compat mode parser performance to other JSON parsers.
-
Oj Object Mode Performance compares Oj object mode parser performance to other marshallers.
-
Oj Callback Performance compares Oj callback parser performance to other JSON parsers.
Links of Interest
Section titled “Links of Interest”-
Fast XML parser and marshaller on RubyGems: https://rubygems.org/gems/ox
-
Fast XML parser and marshaller on GitHub: https://github.com/ohler55/ox
-
Need for Speed for an overview of how Oj::Doc was designed.
-
OjC, a C JSON parser: https://www.ohler.com/ojc also at https://github.com/ohler55/ojc
-
Agoo, a high performance Ruby web server supporting GraphQL on GitHub: https://github.com/ohler55/agoo
-
Agoo-C, a high performance C web server supporting GraphQL on GitHub: https://github.com/ohler55/agoo-c
-
oj-introspect, an example of creating an Oj parser extension in C: https://github.com/meinac/oj-introspect
Contributing
Section titled “Contributing”- Provide a Pull Request off the
developbranch. - 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.