123456789_123456789_123456789_123456789_123456789_

Class: JSON::GenericObject

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, ::OpenStruct
Instance Chain:
self, ::OpenStruct
Inherits: OpenStruct
Defined in: ext/json/lib/json/generic_object.rb

Class Attribute Summary

Class Method Summary

Instance Method Summary

::OpenStruct - Inherited

#as_json

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

#to_json

Returns a ::JSON string representing self:

Class Attribute Details

.json_creatable=(value) (rw)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 17

attr_writer :json_creatable

.json_creatable?Boolean (rw)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 13

def json_creatable?
  @json_creatable
end

Class Method Details

.[]

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 11

alias [] new

.dump(obj, *args)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 45

def dump(obj, *args)
  ::JSON.dump(obj, *args)
end

.from_hash(object)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 25

def from_hash(object)
  case
  when object.respond_to?(:to_hash)
    result = new
    object.to_hash.each do |key, value|
      result[key] = from_hash(value)
    end
    result
  when object.respond_to?(:to_ary)
    object.to_ary.map { |a| from_hash(a) }
  else
    object
  end
end

.json_create(data)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 19

def json_create(data)
  data = data.dup
  data.delete JSON.create_id
  self[data]
end

.load(source, proc = nil, opts = {})

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 40

def load(source, proc = nil, opts = {})
  result = ::JSON.load(source, proc, opts.merge(:object_class => self))
  result.nil? ? new : result
end

Instance Method Details

#[](name)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 55

def [](name)
  __send__(name)
end

#[]=(name, value)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 59

def []=(name, value)
  __send__("#{name}=", value)
end

#as_json

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 67

def as_json(*)
  { JSON.create_id => self.class.name }.merge to_hash
end

#to_hash

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 51

def to_hash
  table
end

#to_json(*a)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 71

def to_json(*a)
  as_json.to_json(*a)
end

#|(other)

[ GitHub ]

  
# File 'ext/json/lib/json/generic_object.rb', line 63

def |(other)
  self.class[other.to_hash.merge(to_hash)]
end