pydantic学习与使用-17.使用 json_encoders 格式化 datetime 类型

发布时间 2023-10-10 16:57:26作者: 上海-悠悠

前言

使用datetime 日期类型时,想格式化成自定义的"%Y-%m-%d %H:%M:%S" 格式

datetime 类型

from pydantic import BaseModel
from datetime import datetime
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/

class UserInfo(BaseModel):
    id: int
    name: str
    create_time: datetime=datetime.now()

user = UserInfo(**{"id": 1, "name": "yoyo"})
print(user.json())

转json格式,输出结果

{"id": 1, "name": "yoyo", "create_time": "2023-10-10T16:47:27.023813"}

'create_time'日期时间格式,我期望得到的格式是2023-10-10 16:47:27

json_encoders 格式化 datetime 类型

json_encoders 可以格式指定的类型

from pydantic import BaseModel
from datetime import datetime

# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


class UserInfo(BaseModel):
    id: int
    name: str
    create_time: datetime=datetime.now()

    class Config:
        json_encoders = {
            datetime: lambda v: v.strftime("%Y-%m-%d %H:%M:%S")
        }


user = UserInfo(**{"id": 1, "name": "yoyo"})
print(user.json())

运行结果:

{"id": 1, "name": "yoyo", "create_time": "2023-10-10 16:48:47"}