import json
class smallDuck(object):
def __init__(self, one, two, tree):
self.one = one
self.two = two
self.tree = tree
class myEncoder(json.JSONEncoder):
def isInClasses(self, obj):
for i in self.listOfClasses :
if isinstance(obj, i):
return True
return False
def default(self, obj):
if isinstance(obj, smallDuck):
return { obj.__class__.__name__ : obj.__dict__ }
return json.JSONEncoder.default(self, obj)
def encoderFactory(listOfClasses):
classDict = {"listOfClasses" : listOfClasses }
return type("newEncoder", (myEncoder, ) , classDict)
duck = [smallDuck("shit", 1, smallDuck(1,2,3)),2,3,4]
with open("try.json", "w") as myf:
string = json.dumps(duck, cls = encoderFactory([smallDuck]))
myf.write(string)