Many of the programmers might have faced the problem of serializing objects of depth `N` or serializing nested objects. Personally i have also faced such a situation and here is the solution which i found. There may be better implementations of serializing nested objects, but i think this might be helpful for some novices like me.
#! /usr/bin/python
import json
class Reference(object):
pass
class Engineering(Reference):
subject = 'ECE'
college = 'Jyothi Engineering College'
_serializable_fields = ['subject', 'college']
class Programmer(Reference):
designation = 'Software Engineer'
company = 'Scintilla Technologies'
_serializable_fields = ['designation', 'company']
class Individual(object):
name = 'Akhil Lawrence'
age = 23
job = Programmer()
education = Engineering()
_serializable_fields = ['name', 'age', 'job', 'education']
def Serialize(obj, excludes=[]):
response = dict()
for attr_name in obj._serializable_fields:
if attr_name in excludes:
continue
else:
attr = getattr(obj, attr_name)
if attr and not isinstance(attr, Reference):
response.update({attr_name: attr})
elif attr and isinstance(attr, Reference):
response.update({attr_name: Serialize(attr)})
return response
def Serializer(objs, excludes=[]):
response = []
for obj in objs:
response.append(Serialize(obj, excludes))
return response
if __name__ == '__main__':
objs = [Individual(), Individual()]
excludes = []
print json.dumps(Serializer(objs, excludes), indent=4)