Все ноды/Data/JSON

JSON-слияние

Сливает два JSON-объекта: ключи из B перезаписывают ключи из A. Поддерживает deep merge (рекурсивный) и shallow merge. Удобен для объединения данных из разных нод.

JSON-слияние
InputResult
Base
Override

Тип в графе: json_merge

Exec

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

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

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

Минимальный рабочий воркфлоу

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

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

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

Нода собирает один объект из двух: ответ внешнего сервиса плюс свои поля, набор значений по умолчанию плюс переопределения от пользователя, результаты двух параллельных веток в общий итог. Если поле всего одно — проще Установить JSON-поле.

Не путайте с нодой Объединение: та про провода, она сводит отдельные связи выполнения и данных в одну. Здесь речь только про содержимое объектов.

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

«Base» — основа, «Override» — то, что её перекрывает: при совпадении ключей побеждает значение из «Override». Если «Base» не подключён, основой становится то, что пришло в порт «Input», — объект можно провести по основной цепочке.

Переключатель «Глубокое слияние» включён по умолчанию: вложенные объекты объединяются рекурсивно, поэтому {"user": {"name": "…"}} поверх {"user": {"id": 7}} сохранит и id, и name. Выключенный переключатель перезаписывает поле верхнего уровня целиком — user станет ровно тем, что пришло в «Override».

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

  • «Override» обязателен. У основы есть запасной путь через «Input», у перекрытия — нет: слияние с пустотой означает, что автор забыл провести связь, и нода честно падает.
  • Массивы не склеиваются. Список из «Override» заменяет список из «Base» целиком, на любом уровне вложенности. Чтобы дописать элемент в массив, нужен JavaScript-код.
  • Не-объект на входе превращается в пустой объект. Если в «Base» пришёл список или строка, они исчезнут без ошибки, а результатом станет одно «Override».
  • Стороны не симметричны. Перепутанные местами «Base» и «Override» дают другой ответ, и выглядит это как «нода потеряла мои данные».

Входы

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

Run trigger; its payload is used as the base object when the Base port is not connected.

BaseaДанныеdata

Base object

OverridebДанныеdata

Keys from B override A

Выходы

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

Настройки

ПолеТипПо умолчаниюОписание
Глубокое слияниеdeepbooleantrue

Рекурсивно сливать вложенные объекты (выкл = поверхностное перезаписывание)

Общие поля

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

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