Module: MultiJson

### Home Classes Methods

### In Files

- lib/multi_json/adapter.rb
- lib/multi_json/adapters/gson.rb
- lib/multi_json/adapters/jrjackson.rb
- lib/multi_json/adapters/json_common.rb
- lib/multi_json/adapters/json_gem.rb
- lib/multi_json/adapters/json_pure.rb
- lib/multi_json/adapters/nsjsonserialization.rb
- lib/multi_json/adapters/oj.rb
- lib/multi_json/adapters/ok_json.rb
- lib/multi_json/adapters/yajl.rb
- lib/multi_json/convertible_hash_keys.rb
- lib/multi_json/options.rb
- lib/multi_json/vendor/okjson.rb
- lib/multi_json/version.rb
- lib/multi_json.rb

### Namespace

- MODULE MultiJson::Adapters
- MODULE MultiJson::ConvertibleHashKeys
- MODULE MultiJson::OkJson
- MODULE MultiJson::Options
- CLASS MultiJson::Adapter
- CLASS MultiJson::LoadError

### Methods

- #adapter
- #adapter=
- #current_adapter
- #decode
- #default_adapter
- #default_engine
- #default_options=
- #dump
- #encode
- #engine
- #engine=
- #load
- #load_adapter
- #use
- #with_adapter
- #with_engine

### Included Modules

- MultiJson::Options

### Class/Module Index

Quicksearch

- MultiJson
- MultiJson::Adapter
- MultiJson::Adapters
- MultiJson::Adapters::Gson
- MultiJson::Adapters::Jrjackson
- MultiJson::Adapters::JsonCommon
- MultiJson::Adapters::JsonGem
- MultiJson::Adapters::JsonPure
- MultiJson::Adapters::Nsjsonserialization
- MultiJson::Adapters::Oj
- MultiJson::Adapters::OkJson
- MultiJson::Adapters::Yajl
- MultiJson::ConvertibleHashKeys
- MultiJson::LoadError
- MultiJson::OkJson
- MultiJson::OkJson::Error
- MultiJson::OkJson::Utf8Error
- MultiJson::Options

No matching classes.

# MultiJson

Some parts adapted from golang.org/src/pkg/json/decode.go and golang.org/src/pkg/utf8/utf8.go

### Constants

DecodeError
REQUIREMENT_MAP
VERSION

### Public Instance Methods

adapter() click to toggle source

Get the current adapter class.

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

      self.use nil # load default adapter

      @adapter
    end

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

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

decode(string, options={}) click to toggle source
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 42
    def default_adapter
      return :oj if defined?(::Oj)
      return :yajl if defined?(::Yajl)
      return :json_gem if defined?(::JSON)
      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() click to toggle source
Alias for: default_adapter
default_options=(value) click to toggle source

    # File lib/multi_json.rb, line 22
    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 129
    def dump(object, options={})
      current_adapter(options).dump(object, options)
    end

Also aliased as: encode
encode(object, options={}) click to toggle source
Alias for: dump
engine() click to toggle source
Alias for: adapter
engine=(new_adapter) click to toggle source
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 110
    def load(string, options={})
      adapter = current_adapter(options)
      begin
        adapter.load(string, options)
      rescue adapter::ParseError => exception
        raise LoadError.new(exception.message, exception.backtrace, string)
      end
    end

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

    # File lib/multi_json.rb, line 88
    def load_adapter(new_adapter)
      case new_adapter
      when String, Symbol
        require "multi_json/adapters/#{new_adapter}"
        MultiJson::Adapters.const_get(:"#{new_adapter.to_s.split('_').map{|s| s.capitalize}.join('')}")
      when NilClass, FalseClass
        load_adapter default_adapter
      when Class, Module
        new_adapter
      else
        raise NameError
      end
    rescue NameError, ::LoadError
      raise ArgumentError, 'Did not recognize your adapter specification.'
    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)

    # File lib/multi_json.rb, line 82
    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 135
    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) click to toggle source
Alias for: with_adapter

[Validate]

Generated with the Darkfish Rdoc Generator 2.