Files
fastapi/docs/ru/docs/tutorial/encoder.md
Sebastián Ramírez 12cf2bd854 🌐 Update translations for ru (update-and-add) (#15152)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yurii Motov <yurii.motov.monte@gmail.com>
2026-03-19 18:56:20 +01:00

2.6 KiB
Raw Blame History

JSON-совместимый кодировщик

В некоторых случаях может потребоваться преобразование типа данных (например, Pydantic-модели) в тип, совместимый с JSON (например, dict, list и т.д.).

Например, если необходимо хранить его в базе данных.

Для этого FastAPI предоставляет функцию jsonable_encoder().

Использование jsonable_encoder

Представим, что у вас есть база данных fake_db, которая принимает только JSON-совместимые данные.

Например, она не принимает объекты datetime, так как они не совместимы с JSON.

В таком случае объект datetime следует преобразовать в str, содержащую данные в формате ISO.

Точно так же эта база данных не может принять Pydantic-модель (объект с атрибутами), а только dict.

Для этого можно использовать функцию jsonable_encoder.

Она принимает объект, например, Pydantic-модель, и возвращает его версию, совместимую с JSON:

{* ../../docs_src/encoder/tutorial001_py310.py hl[4,21] *}

В данном примере она преобразует Pydantic-модель в dict, а datetime - в str.

Результатом её вызова является объект, который может быть закодирован с помощью функции из стандартной библиотеки Python json.dumps().

Функция не возвращает большой str, содержащий данные в формате JSON (в виде строки). Она возвращает стандартную структуру данных Python (например, dict) со значениями и подзначениями, которые совместимы с JSON.

/// note | Примечание

jsonable_encoder фактически используется FastAPI внутри системы для преобразования данных. Однако он полезен и во многих других сценариях.

///