对含有date/datetime以及Decimal格式数据的json数据进行转换
json不可以直接序列化date与datetime类型的数据,需要先将它们转换为str类型的数据才可以:
import json from datetime import datetime from datetime import date #对含有日期格式数据的json数据进行转换 class JsonCustomEncoder(json.JSONEncoder): def default(self, field): if isinstance(field,datetime): return field.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(field,date): return field.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self,field) d1 = datetime.now() dd = json.dumps(d1,cls=JsonCustomEncoder) print(dd)
其实,最基本的就是利用了strftime方法:
from datetime import datetime i = datetime.strftime(i,'%Y-%m-%d')
另外,从数据库中取出来的Decimal类型的数据也不可以直接进行序列化操作,需要将它转换为str类型的数据:
import decimal price = str(decimal.Decimal(price).quantize(decimal.Decimal('0.00')))
~~