【发布时间】:2021-12-01 02:43:54
【问题描述】:
我有以下使用 Pydantic BaseModel 数据类的代码
from enum import Enum
import requests
from pydantic import BaseModel
from requests import Response
class PetType(Enum):
DOG: str = 'dog'
CAT: str = 'cat'
class Pet(BaseModel):
name: str
type: PetType
my_dog: Pet = Pet(name='Lucky', type=PetType.DOG)
# This works
resp: Response = requests.post('https://postman-echo.com/post', json=my_dog.json())
print(resp.json())
#This doesn't work
resp: Response = requests.post('https://postman-echo.com/post', json=my_dog.dict())
print(resp.json())
当我发送 json 等于模型的 dict() 时,我得到了错误:
> TypeError:“PetType”类型的对象不是 JSON 可序列化的
如何克服这个错误并使 PetType 也可序列化?
附言 上面的例子很简短,但我遇到了一个用例,两种情况都发送
json=my_dog.json()
和
json=my_dog.dict()
不工作。这就是为什么我需要使用 dict() 解决发送问题
【问题讨论】:
标签: python json serialization pydantic