class KeywordDictDecoder: def __init__(self): self.keyword_dict = KeywordDict() def __dict_to_class(self, dict_item): inst = None if "__class__" in dict_item: class_name = dict_item.pop("__class__") module_name = dict_item.pop("__module__") module = __import__(module_name) inst = globals()[class_name] return inst def decode(self, inputobj): keyword_dict_class = self.__dict_to_class(inputobj) if keyword_dict_class is not None: self.keyword_dict = keyword_dict_class() # print json.dumps(inputobj,indent = 2) for keyword in inputobj: for exp_attr_dict in inputobj[keyword]: exp_class = self.__dict_to_class(exp_attr_dict) expobj = exp_class(self.keyword_dict) for attr in exp_attr_dict: setattr(expobj, attr, exp_attr_dict[attr]) self.keyword_dict.add_keyword(keyword, expobj)