Flowdock

frozen_string_literal: false


JavaScript Object Notation (JSON)

JSON is a lightweight data-interchange format. It is easy for us humans to read and write. Plus, equally simple for machines to generate or parse. JSON is completely language agnostic, making it the ideal interchange format.

Built on two universally available structures:

1. A collection of name/value pairs. Often referred to as an _object_, hash table, record, struct, keyed list, or associative array.
2. An ordered list of values. More commonly called an _array_, vector, sequence or list.

To read more about JSON visit: http://json.org

Parsing JSON

To parse a JSON string received by another application or generated within your existing application:

require 'json'

my_hash = JSON.parse('{"hello": "goodbye"}')
puts my_hash["hello"] => "goodbye"

Notice the extra quotes '' around the hash notation. Ruby expects the argument to be a string and can’t convert objects like a hash or array.

Ruby converts your string into a hash

Generating JSON

Creating a JSON string for communication or serialization is just as simple.

require 'json'

my_hash = {:hello => "goodbye"}
puts JSON.generate(my_hash) => "{\"hello\":\"goodbye\"}"

Or an alternative way:

require 'json'
puts {:hello => "goodbye"}.to_json => "{\"hello\":\"goodbye\"}"

JSON.generate only allows objects or arrays to be converted to JSON syntax. to_json, however, accepts many Ruby classes even though it acts only as a method for serialization:

require 'json'

1.to_json => "1"

Constants

JSON_LOADED = true unless defined?(::JSON::JSON_LOADED)

UnparserError = GeneratorError

MinusInfinity = -Infinity

Infinity = 1.0/0

NaN = 0.0/0

VERSION_BUILD = VERSION_ARRAY[2]

VERSION_MINOR = VERSION_ARRAY[1]

VERSION_MAJOR = VERSION_ARRAY[0]

VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i }

VERSION = '2.1.0'

Attributes

[RW] dump_default_options

The global default options for the JSON.dump method:

:max_nesting: false
:allow_nan: true
:allow_blank: true
[RW] load_default_options

The global default options for the JSON.load method:

:max_nesting: false
:allow_nan: true
:allow_blank: true
[RW] create_id

This is create identifier, which is used to decide if the json_create hook of a class should be called. It defaults to ‘json_class’.

[RW] state

Returns the JSON generator state class that is used by JSON. This is either JSON::Ext::Generator::State or JSON::Pure::Generator::State.

[R] generator

Returns the JSON generator module that is used by JSON. This is either JSON::Ext::Generator or JSON::Pure::Generator.

[R] parser

Returns the JSON parser class that is used by JSON. This is either JSON::Ext::Parser or JSON::Pure::Parser.

Show files where this module is defined (7 files)
Register or log in to add new notes.