def todict(obj): # pylint: disable=too-many-return-statements
if isinstance(obj, dict):
return {k: todict(v) for (k, v) in obj.items()}
elif isinstance(obj, list):
return [todict(a) for a in obj]
elif isinstance(obj, Enum):
return obj.value
elif isinstance(obj, (date, time, datetime)):
return obj.isoformat()
elif isinstance(obj, timedelta):
return str(obj)
elif hasattr(obj, '_asdict'):
return todict(obj._asdict())
elif hasattr(obj, '__dict__'):
return dict([(to_camel_case(k), todict(v))
for k, v in obj.__dict__.items()
if not callable(v) and not k.startswith('_')])
return obj
评论列表
文章目录