def default(self, o):
if isinstance(o, datetime.datetime):
return o.isoformat()
if isinstance(o, datetime.date):
return o.isoformat()
if isinstance(o, datetime.time):
return o.isoformat()
if isinstance(o, decimal.Decimal):
return str(o)
return json.JSONEncoder.default(self, o)
# ????? json.dumps(yourobj, cls=DateTimeEncoder)
# class DecimalEncoder(json.JSONEncoder):
# def _iterencode(self, o, markers=None):
# if isinstance(o, decimal.Decimal):
# # wanted a simple yield str(o) in the next line,
# # but that would mean a yield on the line with super(...),
# # which wouldn't work (see my comment below), so...
# return (str(o) for o in [o])
# return super(DecimalEncoder, self)._iterencode(o, markers)
评论列表
文章目录