class Range - json: Ruby Standard Library Documentation

# class Range

### Public Class Methods

json_create(object) click to toggle source

See `as_json`.

    # File json/lib/json/add/range.rb, line 9
    def self.json_create(object)
      new(*object['a'])
    end

### Public Instance Methods

as_json(*) click to toggle source

Methods `Range#as_json` and `Range.json_create` may be used to serialize and deserialize a Range object; see Marshal.

Method `Range#as_json` serializes `self`, returning a 2-element hash representing `self`:

    require 'json/add/range'
    x = (1..4).as_json     # => {"json_class"=>"Range", "a"=>[1, 4, false]}
    y = (1...4).as_json    # => {"json_class"=>"Range", "a"=>[1, 4, true]}
    z = ('a'..'d').as_json # => {"json_class"=>"Range", "a"=>["a", "d", false]}

Method `JSON.create` deserializes such a hash, returning a Range object:

    Range.json_create(x) # => 1..4
    Range.json_create(y) # => 1...4
    Range.json_create(z) # => "a".."d"

    # File json/lib/json/add/range.rb, line 31
    def as_json(*)
      {
        JSON.create_id  => self.class.name,
        'a'             => [ first, last, exclude_end? ]
      }
    end

to_json(*args) click to toggle source

Returns a `JSON` string representing `self`:

    require 'json/add/range'
    puts (1..4).to_json
    puts (1...4).to_json
    puts ('a'..'d').to_json

Output:

    {"json_class":"Range","a":[1,4,false]}
    {"json_class":"Range","a":[1,4,true]}
    {"json_class":"Range","a":["a","d",false]}

    # File json/lib/json/add/range.rb, line 51
    def to_json(*args)
      as_json.to_json(*args)
    end