diff --git a/CppHeaderParser/CppHeaderParser.py b/CppHeaderParser/CppHeaderParser.py index a369308..70cffda 100644 --- a/CppHeaderParser/CppHeaderParser.py +++ b/CppHeaderParser/CppHeaderParser.py @@ -3709,11 +3709,28 @@ def toJSON(self, indent=4, separators=None): import json self._strip_parent_keys() + + def clean_dict(markers, keys=[]): + if id(markers) in keys: + return None + elif isinstance(markers, dict): + keys_ = keys + [id(markers)] + return { + key: clean_dict(markers[key], keys_) + for key, value in markers.items() + } + elif type(markers) in [list, set, tuple]: + return type(markers)(clean_dict(m, keys) for m in markers) + return markers + try: del self.__dict__["classes_order"] except: pass - return json.dumps(self.__dict__, indent=indent, separators=separators) + + d = self.__dict__ + d["classes"] = clean_dict(d["classes"]) + return json.dumps(d, indent=indent, separators=separators, default="") def __repr__(self): rtn = {