Inspired by DroidLabs Serializer.
For classes like these:
Person = Struct.new(:name, :age, :dogs)
Dog = Struct.new(:name, :age)
make a serializer like this:
class DogsOwnerSerializer < Serializer
resource do
attr :name
attr :age
collection :dogs do
attrs :name, :age
end
end
end
object tree like this:
person = Person.new(
'Cruella', 44,
[
Dog.new('Perdita',0.5),
Dog.new('Lucky',0.5),
Dog.new('Rolly',0.5)
]
)
run:
DogsOwnerSerializer.serialize(person).to_json
result will look like:
{
"name": "Cruella",
"age": 44,
"dogs":
[
{"name": "Perdita", "age": 0.5},
{"name": "Lucky", "age": 0.5},
{"name": "Rolly", "age": 0.5}
]
}