Все ноды/Data/JSON

JSON: задать поле

Устанавливает значение по точечному пути в объекте. Принимает исходный JSON (порт «JSON») и новое значение (порт «Значение»), возвращает изменённый объект. Путь формата user.name или $.user.name (ведущий $. необязателен). Индексы массивов НЕ поддерживаются — для $.items[0].x используйте code_javascript.

JSON: задать поле▶
ВходЗначение
JSON
Значение

Тип в графе: json_set

Exec

Можно включить выход ошибки и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий сценарий

Вход
JSON: задать поле▶
Выход▶
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Нода меняет одно поле объекта и возвращает изменённую копию: проставить статус в ответе API, дописать идентификатор сессии в тело запроса, подменить поле перед отправкой дальше. Если полей несколько и они уже собраны в объект — это JSON-слияние. Если нужен текст, а не объект, — Шаблон. Если преобразование сложнее одного присваивания (перебрать массив, посчитать, переименовать ключи) — берите JavaScript-код.

Как это работает

Исходный объект приходит в порт «JSON». Если он не подключён, нода берёт то, что пришло в порт «Вход» — то есть объект можно просто провести по основной цепочке. Новое значение приходит в порт «Значение».

Путь записывается через точку: user.name или $.user.name — ведущий $. необязателен. Недостающие объекты по пути создаются: путь user.name на пустом объекте даст {"user": {"name": …}}. Исходный объект не мутирует, вниз уходит копия, поэтому нода, стоящая выше, продолжает отдавать своё прежнее значение.

Частые ошибки

  • Индексы массивов не работают. items[0].x не найдёт нулевой элемент, а создаст поле с именем items[0]. Для массивов используйте JavaScript-код.
  • Путь не шаблонизируется. Поле «Путь» берётся буквально, {{ … }} в нём не подставляется — динамический путь придётся собирать в JavaScript-коде.
  • Не подключённый порт «Значение» пишет пустое значение. Нода при этом успешна: в поле окажется null, и ошибка всплывёт где-то ниже.
  • Если по пути лежит не объект, запись молча не происходит. Когда промежуточный сегмент оказывается строкой или массивом, нода возвращает исходный объект без изменений.
  • Совсем без исходного объекта нода падает. Если ни «JSON», ни «Вход» ничего не принесли, шаг завершается ошибкой — это лучше, чем создать объект из воздуха.

Входы

ПортПроводДанныеПримечания
ВходinputИсполнение + данныеexecute_data—

Запускает шаг; принесённое значение служит исходным объектом, если порт JSON не подключён.

JSONjsonДанныеdata—

Исходный объект.

ЗначениеvalueДанныеdata—

Значение, которое нужно записать.

Выходы

ПортПроводДанныеПримечания
ЗначениеoutputИсполнение + данныеexecute_dataobject

Настройки

ПолеТипПо умолчаниюОписание
Путьpathstring$.field

Точечный путь к полю, напр. user.name или $.user.name (ведущий $. необязателен). Индексы массивов не поддерживаются.

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этой ноды.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.