Method: JSON.load

Defined in:
lib/vendor/json_pure/lib/json/common.rb

.load(source, proc = nil, options = {}) ⇒ Object Also known as: restore

Load a ruby data structure from a JSON source and return it. A source can either be a string-like object, an IO-like object, or an object responding to the read method. If proc was given, it will be called with any nested Ruby object as an argument recursively in depth first order. To modify the default options pass in the optional options argument as well.

BEWARE: This method is meant to serialise data from trusted user input, like from your own database server or clients under your control, it could be dangerous to allow untrusted users to pass JSON sources into it. The default options for the parser can be changed via the load_default_options method.

This method is part of the implementation of the load/dump interface of Marshal and YAML.



322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
# File 'lib/vendor/json_pure/lib/json/common.rb', line 322

def load(source, proc = nil, options = {})
  opts = load_default_options.merge options
  if source.respond_to? :to_str
    source = source.to_str
  elsif source.respond_to? :to_io
    source = source.to_io.read
  elsif source.respond_to?(:read)
    source = source.read
  end
  if opts[:quirks_mode] && (source.nil? || source.empty?)
    source = 'null'
  end
  result = parse(source, opts)
  recurse_proc(result, &proc) if proc
  result
end