module MultiJson - multi_json-1.10.1 Documentation

# module MultiJson

### Constants

ALIASES
DecodeError
REQUIREMENT_MAP
VERSION

### Public Instance Methods

adapter() click to toggle source

Get the current adapter class.

    # File lib/multi_json.rb, line 69
    def adapter
      return @adapter if defined?(@adapter) && @adapter

      self.use nil # load default adapter

      @adapter
    end

Also aliased as: engine
adapter=(new_adapter)
Alias for: use
current_adapter(options={}) click to toggle source

    # File lib/multi_json.rb, line 126
    def current_adapter(options={})
      if new_adapter = options[:adapter]
        load_adapter(new_adapter)
      else
        adapter
      end
    end

decode(string, options={})
Alias for: load
default_adapter() click to toggle source

The default adapter based on what you currently have loaded and installed. First checks to see if any adapters are already loaded, then checks to see which are installed if none are loaded.

    # File lib/multi_json.rb, line 45
    def default_adapter
      return :oj if defined?(::Oj)
      return :yajl if defined?(::Yajl)
      return :jr_jackson if defined?(::JrJackson)
      return :json_gem if defined?(::JSON::JSON_LOADED)
      return :gson if defined?(::Gson)

      REQUIREMENT_MAP.each do |library, adapter|
        begin
          require library
          return adapter
        rescue ::LoadError
          next
        end
      end

      Kernel.warn '[WARNING] MultiJson is using the default adapter (ok_json).' +
        'We recommend loading a different JSON library to improve performance.'

      :ok_json
    end

Also aliased as: default_engine
default_engine()
Alias for: default_adapter
default_options() click to toggle source

    # File lib/multi_json.rb, line 17
    def default_options
      Kernel.warn "MultiJson.default_options is deprecated\n" +
        "Use MultiJson.load_options or MultiJson.dump_options instead"

      self.load_options
    end

default_options=(value) click to toggle source

    # File lib/multi_json.rb, line 10
    def default_options=(value)
      Kernel.warn "MultiJson.default_options setter is deprecated\n" +
        "Use MultiJson.load_options and MultiJson.dump_options instead"

      self.load_options = self.dump_options = value
    end

dump(object, options={}) click to toggle source

Encodes a Ruby object as JSON.

    # File lib/multi_json.rb, line 135
    def dump(object, options={})
      current_adapter(options).dump(object, options)
    end

Also aliased as: encode
encode(object, options={})
Alias for: dump
engine()
Alias for: adapter
engine=(new_adapter)
Alias for: use
load(string, options={}) click to toggle source

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.

    # File lib/multi_json.rb, line 116
    def load(string, options={})
      adapter = current_adapter(options)
      begin
        adapter.load(string, options)
      rescue adapter::ParseError => exception
        raise ParseError.build(exception, string)
      end
    end

Also aliased as: decode
load_adapter(new_adapter) click to toggle source

    # File lib/multi_json.rb, line 95
    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 => exception
      raise AdapterError.build(exception)
    end

use(new_adapter) click to toggle source

Set the JSON parser utilizing a symbol, string, or class. Supported by default are:

- `:oj`

- `:json_gem`

- `:json_pure`

- `:ok_json`

- `:yajl`

- `:nsjsonserialization` (MacRuby only)

- `:gson` (JRuby only)

- `:jr_jackson` (JRuby only)

    # File lib/multi_json.rb, line 89
    def use(new_adapter)
      @adapter = load_adapter(new_adapter)
    end

Also aliased as: adapter=, engine=
with_adapter(new_adapter) { || ... } click to toggle source

Executes passed block using specified adapter.

    # File lib/multi_json.rb, line 141
    def with_adapter(new_adapter)
      old_adapter, self.adapter = adapter, new_adapter
      yield
    ensure
      self.adapter = old_adapter
    end

Also aliased as: with_engine
with_engine(new_adapter)
Alias for: with_adapter

### Private Instance Methods

load_adapter_from_string_name(name) click to toggle source

    # File lib/multi_json.rb, line 151
    def load_adapter_from_string_name(name)
      name = ALIASES.fetch(name, name)
      require "multi_json/adapters/#{name.downcase}"
      klass_name = name.to_s.split('_').map(&:capitalize) * ''
      MultiJson::Adapters.const_get(klass_name)
    end