def print_json(obj, verbose=False, err=False):
def default(obj):
if hasattr(obj, 'for_json'):
if 'verbose' in signature(obj.for_json).parameters:
return obj.for_json(verbose=verbose)
else:
return obj.for_json()
elif isinstance(obj, Iterator):
return list(obj)
else:
try:
data = vars(obj).copy()
except TypeError:
data = {"__repr__": repr(obj)}
data["__class__"] = type(obj).__name__
return data
def dumps(x):
return json.dumps(x, sort_keys=True, indent=4, ensure_ascii=False,
default=default)
if isinstance(obj, Iterator):
first = True
click.echo('[', nl=False, err=err)
for o in obj:
if first:
click.echo(err=err)
first = False
else:
click.echo(',', err=err)
click.echo(indent(dumps(o), ' '*4), nl=False, err=err)
if not first:
click.echo(err=err)
click.echo(']', err=err)
else:
click.echo(dumps(obj), err=err)
评论列表
文章目录