Class: Rackson::ObjectMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/rackson/object_mapper.rb

Instance Method Summary collapse

Instance Method Details

#deserialize(input, klass) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/rackson/object_mapper.rb', line 5

def deserialize(input, klass)
  case input
  when String
    deserialize(JSON.parse(input), klass)
  when Hash
    deserialize_from_hash(input, klass)
  when Array
    deserialize_into_array(input, klass)
  end
end

#deserialize_from_hash(hash, klass) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/rackson/object_mapper.rb', line 20

def deserialize_from_hash(hash, klass)
  klass.new.tap do |instance|
    klass.instance_variable_get(:@json_properties).each do |property|
      value = generate_value property, hash
      instance.instance_variable_set("@#{property.name}", value)
    end
  end
end

#deserialize_into_array(array, klass) ⇒ Object



29
30
31
32
33
# File 'lib/rackson/object_mapper.rb', line 29

def deserialize_into_array(array, klass)
  array.map do |value|
    deserialize(value, klass)
  end
end

#serialize(input) ⇒ Object



16
17
18
# File 'lib/rackson/object_mapper.rb', line 16

def serialize(input)
  JSON.dump(input.serializable_hash)
end