import json
import decimal
from datetime import date, datetime
class CustomJsonEncoder(json.JSONEncoder):
def default(self, field):
if isinstance(field, date):
return field.strftime('%Y-%m-%d')
elif isinstance(field, datetime):
return field.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(field, decimal.Decimal):
return float(field)
# 如果有更多json无法序列化的类型,就继续elif手动处理
else: # 其他json能序列化的就调用父类的default方法就完了
return json.JSONEncoder.default(self, field)
data_list = [
{
"name": "zhangkai1", "age": 18, "ctime": datetime.now()},
{
"name": "zhangkai2", "age": 18, "ctime": datetime.now()},
]
# 默认的json无法序列化时间,日期类型的数据
# print(json.dumps(data_list)) # TypeError: Object of type datetime is not JSON serializable
# 所以需要我们手动处理这些数据
print(json.dumps(data_list, cls=CustomJsonEncoder))
"""
[
{"name": "zhangkai1", "age": 18, "ctime": "2021-12-30"},
{"name": "zhangkai2", "age": 18, "ctime": "2021-12-30"
]
"""
json的序列化和其他类型数据
猜你喜欢
转载自blog.csdn.net/weixin_45393723/article/details/124705136
今日推荐
周排行