对含有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')))

~~

posted on 2019-06-14 14:52  江湖乄夜雨  阅读(991)  评论(0编辑  收藏  举报