--- title: Отправить JSON-объект description: Соберите плоский JSON из полей операции или передайте модель целиком. sources: - eazy_sdk.request.JsonBody - eazy_sdk.request.Body - eazy_sdk.request.BodyProjection api_fingerprint: "sha256:dca4bcce0eeb1c0bc2f0f7e7ef636bb4ca77e7b1d0fffbb0220386e312aff426" --- Объявите каждое поле плоского JSON как `JsonField[T]`. Вызов получит точную сигнатуру без словаря `body`, а SDK проверит обязательные значения до отправки. :::::{grid} 1 1 2 2 :class-container: http-exchange :gutter: 2 ::::{grid-item} :class: http-panel http-panel--request **→ Request** · ``POST /users`` ```json {"name": "Ada", "tags": ["admin"]} ``` :::: ::::{grid-item} :class: http-panel http-panel--response **← Response** · ``201 Created`` ```json {"id": 42, "name": "Ada"} ``` :::: ::::: ```{literalinclude} ../../../../../../examples/docs/request_json.py :language: python :start-after: "# docs:example:start" :end-before: "# docs:example:end" ``` Для `tags` создаётся новый список при каждом вызове. `note=UNSET` не попадает в объект. Явное `note=None` станет JSON `null`, если аннотация разрешает `None`. :::{dropdown} Файл примера целиком ```{literalinclude} ../../../../../../examples/docs/request_json.py :language: python ``` ::: Запуск: `uv run python examples/docs/request_json.py`. ```text created: 42 Ada ``` Для одного вложенного документа используйте модель с `markers.JsonBody()`. Её адаптер отвечает за псевдонимы, значения по умолчанию и исключение полей. Не смешивайте корневое тело с `JsonField` в одной операции. Если публичные поля должны превратиться в другую структуру, используйте {doc}`BodyProjection `. ## Дальше - {doc}`Настройте представление тела `. - {doc}`Разберите успешный JSON-ответ `.