Skip to content

Commit

Permalink
🌐 Add Russian translation for docs/ru/docs/tutorial/encoder.md
Browse files Browse the repository at this point in the history
  • Loading branch information
AlertRED committed Oct 3, 2023
1 parent bfde8f3 commit fb10b83
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions docs/ru/docs/tutorial/encoder.md
@@ -0,0 +1,42 @@
# JSON кодировщик

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

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

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

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

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

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

Так, объект `datetime` должен быть преобразован в `str` в <a href="https://en.wikipedia.org/wiki/ISO_8601" class="external-link" target="_blank">ISO формате</a>.

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

Для этого можно использовать `jsonable_encoder`.

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

=== "Python 3.10+"

```Python hl_lines="4 21"
{!> ../../../docs_src/encoder/tutorial001_py310.py!}
```

=== "Python 3.6+"

```Python hl_lines="5 22"
{!> ../../../docs_src/encoder/tutorial001.py!}
```

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

Результатом его вызова является объект, который может быть закодирован с помощью стандартной библиотеки Python <a href="https://docs.python.org/3/library/json.html#json.dumps" class="external-link" target="_blank">`json.dumps()`</a>.

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

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

0 comments on commit fb10b83

Please sign in to comment.