Method: JSON.generate
- Defined in:
- lib/json/common.rb
.generate(obj, opts = nil) ⇒ Object Also known as: unparse
Generate a JSON document from the Ruby data structure obj and return it. state is * a JSON::State object,
-
or a Hash like object (responding to to_hash),
-
an object convertible into a hash by a to_h method,
that is used as or to configure a State object.
It defaults to a state object, that creates the shortest possible JSON text in one line, checks for circular data structures and doesn't allow NaN, Infinity, and -Infinity.
A state hash can have the following keys:
-
indent: a string used to indent levels (default: ''),
-
space: a string that is put after, a : or , delimiter (default: ''),
-
space_before: a string that is put before a : pair delimiter (default: ''),
-
object_nl: a string that is put at the end of a JSON object (default: ''),
-
array_nl: a string that is put at the end of a JSON array (default: ''),
-
allow_nan: true if NaN, Infinity, and -Infinity should be generated, otherwise an exception is thrown if these values are encountered. This options defaults to false.
-
max_nesting: The maximum depth of nesting allowed in the data structures from which JSON is to be generated. Disable depth checking with :max_nesting => false, it defaults to 100.
See also the fast_generate for the fastest creation method with the least amount of sanity checks, and the pretty_generate method for some defaults for pretty output.
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/json/common.rb', line 208 def generate(obj, opts = nil) if State === opts state, opts = opts, nil else state = SAFE_STATE_PROTOTYPE.dup end if opts if opts.respond_to? :to_hash opts = opts.to_hash elsif opts.respond_to? :to_h opts = opts.to_h else raise TypeError, "can't convert #{opts.class} into Hash" end state = state.configure(opts) end state.generate(obj) end |