Module: MultiJson
- Extended by:
- MultiJson
- Includes:
- Options
- Included in:
- MultiJson
- Defined in:
- lib/multi_json.rb,
lib/multi_json/adapter.rb,
lib/multi_json/options.rb,
lib/multi_json/version.rb,
lib/multi_json/adapters/oj.rb,
lib/multi_json/parse_error.rb,
lib/multi_json/adapter_error.rb,
lib/multi_json/adapters/gson.rb,
lib/multi_json/adapters/yajl.rb,
lib/multi_json/options_cache.rb,
lib/multi_json/vendor/okjson.rb,
lib/multi_json/adapters/ok_json.rb,
lib/multi_json/adapters/json_gem.rb,
lib/multi_json/adapters/json_pure.rb,
lib/multi_json/adapters/jr_jackson.rb,
lib/multi_json/convertible_hash_keys.rb
Defined Under Namespace
Modules: Adapters, ConvertibleHashKeys, OkJson, Options, OptionsCache Classes: Adapter, AdapterError, ParseError, Version
Constant Summary collapse
- ALIASES =
{"jrjackson" => "jr_jackson"}.freeze
- REQUIREMENT_MAP =
{ oj: "oj", yajl: "yajl", jr_jackson: "jrjackson", json_gem: "json", gson: "gson", json_pure: "json" }.freeze
- VERSION =
Version.to_s.freeze
- DecodeError =
Legacy support
LoadError = ParseError
Instance Method Summary collapse
-
#adapter ⇒ Object
(also: #engine)
Get the current adapter class.
- #current_adapter(options = {}) ⇒ Object
-
#default_adapter ⇒ Object
(also: #default_engine)
The default adapter based on what you currently have loaded and installed.
- #default_options ⇒ Object
- #default_options=(value) ⇒ Object
-
#dump(object, options = {}) ⇒ Object
(also: #encode)
Encodes a Ruby object as JSON.
-
#load(string, options = {}) ⇒ Object
(also: #decode)
Decode a JSON string into Ruby.
- #load_adapter(new_adapter) ⇒ Object
-
#use(new_adapter) ⇒ Object
(also: #adapter=, #engine=)
Set the JSON parser utilizing a symbol, string, or class.
-
#with_adapter(new_adapter) ⇒ Object
(also: #with_engine)
Executes passed block using specified adapter.
Methods included from Options
#default_dump_options, #default_load_options, #dump_options, #dump_options=, #load_options, #load_options=
Instance Method Details
#adapter ⇒ Object Also known as: engine
Get the current adapter class.
60 61 62 63 64 65 66 |
# File 'lib/multi_json.rb', line 60 def adapter return @adapter if defined?(@adapter) && @adapter use nil # load default adapter @adapter end |
#current_adapter(options = {}) ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/multi_json.rb', line 118 def current_adapter( = {}) if (new_adapter = [:adapter]) load_adapter(new_adapter) else adapter end end |
#default_adapter ⇒ Object Also known as: default_engine
The default adapter based on what you currently have loaded and installed.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/multi_json.rb', line 42 def default_adapter adapter = loaded_adapter || installable_adapter return adapter if adapter @default_adapter_warning_shown ||= begin Kernel.warn( "[WARNING] MultiJson is using the default adapter (ok_json). " \ "We recommend loading a different JSON library to improve performance." ) true end :ok_json end |
#default_options ⇒ Object
17 18 19 20 21 |
# File 'lib/multi_json.rb', line 17 def Kernel.warn "MultiJson.default_options is deprecated\nUse MultiJson.load_options or MultiJson.dump_options instead" end |
#default_options=(value) ⇒ Object
11 12 13 14 15 |
# File 'lib/multi_json.rb', line 11 def (value) Kernel.warn "MultiJson.default_options setter is deprecated\nUse MultiJson.load_options and MultiJson.dump_options instead" self. = self. = value end |
#dump(object, options = {}) ⇒ Object Also known as: encode
Encodes a Ruby object as JSON.
127 128 129 |
# File 'lib/multi_json.rb', line 127 def dump(object, = {}) current_adapter().dump(object, ) end |
#load(string, options = {}) ⇒ Object Also known as: decode
Decode a JSON string into Ruby.
Options
:symbolize_keys
-
If true, will use symbols instead of strings for the keys.
:adapter
-
If set, the selected adapter will be used for this call.
108 109 110 111 112 113 114 115 |
# File 'lib/multi_json.rb', line 108 def load(string, = {}) adapter = current_adapter() begin adapter.load(string, ) rescue adapter::ParseError => e raise(ParseError.build(e, string), cause: e) end end |
#load_adapter(new_adapter) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/multi_json.rb', line 87 def load_adapter(new_adapter) case new_adapter when String, Symbol load_adapter_from_string_name new_adapter.to_s when NilClass, FalseClass load_adapter default_adapter when Class, Module new_adapter else raise ::LoadError, new_adapter end rescue ::LoadError => e raise(AdapterError.build(e), cause: e) end |
#use(new_adapter) ⇒ Object Also known as: adapter=, engine=
Set the JSON parser utilizing a symbol, string, or class. Supported by default are:
-
:oj
-
:json_gem
-
:json_pure
-
:ok_json
-
:yajl
-
:gson
(JRuby only) -
:jr_jackson
(JRuby only)
79 80 81 82 83 |
# File 'lib/multi_json.rb', line 79 def use(new_adapter) @adapter = load_adapter(new_adapter) ensure OptionsCache.reset end |
#with_adapter(new_adapter) ⇒ Object Also known as: with_engine
Executes passed block using specified adapter.
133 134 135 136 137 138 139 |
# File 'lib/multi_json.rb', line 133 def with_adapter(new_adapter) old_adapter = adapter self.adapter = new_adapter yield ensure self.adapter = old_adapter end |