gem
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.
Using
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
Installation
gem install oj
or in Bundler:
gem 'oj'
Rails and json quickstart
See the Quickstart sections of the Rails and json docs.
multi_json
Code which uses multi_json will automatically prefer Oj if it is installed.
Support
Get supported Oj with a Tidelift Subscription. Security updates are supported.
Further Reading
For more details on options, modes, advanced features, and more follow these links.
-
{file:Options{file:Options.md}[pages/Options.md] for parse and dump options.
-
{file:Modes{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{file:JsonGem.md}[pages/JsonGem.md] includes more details on json gem compatibility and use.
-
{file:Rails{file:Rails.md}[pages/Rails.md] includes more details on Rails and ActiveSupport compatibility and use.
-
{file:Custom{file:Custom.md}[pages/Custom.md] includes more details on Custom mode.
-
{file:Encoding{file:Encoding.md}[pages/Encoding.md] describes the :object encoding format.
-
{file:Compatibility{file:Compatibility.md}[pages/Compatibility.md] lists current compatibility with Rubys and Rails.
-
{file:Advanced{file:Advanced.md}[pages/Advanced.md] for fast parser and marshalling features.
-
{file:Security{file:Security.md}[pages/Security.md] for security considerations.
-
{file:InstallOptions{file:InstallOptions.md}[pages/InstallOptions.md] for install option.
Releases
See {file:CHANGELOG{file:CHANGELOG.md}[CHANGELOG.md] and {file:RELEASE_NOTES{file:RELEASE_NOTES.md}[RELEASE_NOTES.md]
Links
-
Documentation: www.ohler.com/oj/doc, rubydoc.info/gems/oj
-
GitHub repo: github.com/ohler55/oj
-
RubyGems repo: rubygems.org/gems/oj
Follow @peterohler on Twitter for announcements and news about the Oj gem.
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
-
Fast XML parser and marshaller on RubyGems: rubygems.org/gems/ox
-
Fast XML parser and marshaller on GitHub: github.com/ohler55/ox
-
Need for Speed for an overview of how Oj::Doc was designed.
-
OjC, a C JSON parser: www.ohler.com/ojc also at github.com/ohler55/ojc
-
Agoo, a high performance Ruby web server supporting GraphQL on GitHub: github.com/ohler55/agoo
-
Agoo-C, a high performance C web server supporting GraphQL on GitHub: github.com/ohler55/agoo-c
-
oj-introspect, an example of creating an Oj parser extension in C: github.com/meinac/oj-introspect
Contributing
-
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.