Fastapi и Pydantic для создания POST API: TypeError: объект типа не сериализуемый JSON

У меня проблема с FastAPI и Pydantic.

Я хочу создать post api, программа покажет это:

@router.post('/productRoute', response_model=SuccessCreate, status_code=status.HTTP_201_CREATED)
async def create_product_route(create: CreatePR):
    query = ProductRouteModel.insert().values(
        user_id=create.user_id,
        route_id=create.route_id,
        route_name=create.route_name,
        head=create.head.dict(),
        body=create.body,
        route=create.route
    )
    await database.execute(query)
    return {"status": "Successfully Created!"}

Это класс Pydantic:

class RouteSchema(BaseModel):
    id: str
    next: Optional[List[str]]
    prev: List[str]


class HeadSchema(BaseModel):
    b1: str
    b2: str
    b3: str


class BodySchema(BaseModel):
    a1: Optional[str]
    a2: Optional[str]


class CreatePR(BaseModel):
    user_id: str
    route_id: str
    route_name: str
    head: HeadSchema
    body: List[BodySchema]
    route: List[RouteSchema]

Наконец, я хочу опубликовать формат параметра:

{
    user_id: "test1",
    route_id: "route_1",
    route_name: "route_name",
    head: {...},
    body: [{...}, {...}, ..., {...}],
    route: [{...}, {...}, ..., {...}]
}

Когда я выполнил, я получил TypeError: объект типа BodySchema не сериализуемый JSON.

Как исправить нормальную работу программы?


person ppoozine    schedule 14.12.2020    source источник


Ответы (1)


Кажется, ваш код в порядке. Я бы не стал делать резких заявлений, но полагаю, что тело вашего сообщения ошибочно. Не могли бы вы проверить правильность вашего JSON формата. Вы можете проверить это с помощью онлайн-редактора JSON (например, https://jsonbeautifier.org/). Возможные ошибки могут заключаться в использовании одинарных кавычек, пропущенных / лишних запятых или даже, возможно, вы забыли поставить кавычки на свои ключи.

person mustafasencer    schedule 08.01.2021