Все ноды/Data/JSON

JSON: объединить

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

JSON: объединить▶
ВходЗначение
Основа
Переопределение

Тип в графе: json_merge

Exec

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Входы

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

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

ОсноваaДанныеdata—

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

обязателен

ПереопределениеbДанныеdata—

Ключи из B перекрывают ключи из A.

обязателен

Выходы

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

Настройки

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

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

Общие поля

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

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