Инструменты JSON

Объединение JSONвыберите, какие значения сохранить

Задайте глубину, приоритет и правила массивов, затем проверьте результат перед экспортом.

Объединение JSON

JSON слева

JSON справа

Предпросмотр результата

Редактор показывает ограниченный фрагмент. Копирование и скачивание включают весь принятый результат.

Оба документа обрабатываются в памяти браузера; входные данные не отправляются и не сохраняются.

Глубокий режим объединяет вложенные объекты. Поверхностный объединяет поля корня, но выбирает вложенные объекты целиком; парные массивы по-прежнему следуют стратегии массивов. Null — значение, а не удаление.

Соединение сохраняет все элементы: сначала слева, затем справа. Сопоставление по ключу сохраняет левый порядок и добавляет ID только справа; совпавшие записи объединяются глубоко или выбираются целиком в поверхностном режиме.

Результат устарел; копирование и скачивание отключены.

Объединение JSON помогает собрать настройки или записи API, когда совпадают ключи, но важно сохранить вложенную структуру. Замена объекта целиком может удалить его уникальные поля; рекурсивное объединение позволяет их оставить. Список конфликтов показывает места, где пришлось выбрать одно значение.

Глубокое слияние JSON обходит вложенные объекты по полям, а поверхностное слияние выбирает вложенный объект целиком. У массивов отдельная стратегия, действующая в обоих режимах. Настройте её явно, прежде чем использовать результат.

Зачем нужно Объединение JSON?

Видно, что теряется при замене ветви

Объединение JSON показывает место выбора значения. Замена объекта или массива создаёт один конфликт контейнера; рекурсивный обход отмечает только конфликтующие вложенные поля. Равные значения и поля, присутствующие лишь с одной стороны, конфликтами не считаются.

Две структуры настроек сравнивают замену целой ветви с рекурсивным объединением, сохраняющим отдельные листья.

Идентификатор остаётся связан с источником

Объединение JSON сопоставляет записи по ключу без округления числовых ID. Пути в левом и правом источниках отделены от итогового пути. Даже если запись занимает разные индексы, каждый путь ведёт к нужному исходному значению.

Цветные метки ID связывают записи на разных позициях с результатом, сохраняющим левый порядок и добавляющим новую запись.

Сначала задайте правило объединения

01

Разделите глубину и обработку массивов

Поверхностный режим объединяет поля корневого объекта, но выбирает каждый совпавший вложенный объект целиком. Парные массивы всё равно заменяются, соединяются или сопоставляются по ключу. Глубокий режим обходит объекты рекурсивно; выбор стратегии массивов независим.

02

Проверьте идентификаторы

Ключ — непустое имя прямого свойства, а не выражение пути. Каждая запись парного массива должна иметь уникальный строковый или числовой ID. Отсутствующий ID или два математически равных числовых ID в одном массиве отменяют всю операцию.

03

Проверьте оба исходных пути

Нажмите Ctrl/Cmd+Enter для запуска. Сравните пути записей в обоих источниках и скопируйте полный результат. Чтобы добавить документ, просмотрите замену левого входа результатом и примените её. Отмена восстанавливает оба входа, параметры и прошлый результат.

Управляйте конфликтами и порядком

Два режима вложенности

Объединение JSON в глубоком режиме сохраняет уникальные поля во всех парных объектах. Поверхностный режим сохраняет уникальные поля корня, но заменяет совпавший вложенный объект предпочтительным целиком. Массивы и здесь могут объединяться — это явное правило данного инструмента.

Три стратегии массивов

Замена выбирает предпочтительный массив целиком. Конкатенация массивов всегда ставит правую последовательность после левой, сохраняя повторы. Сопоставление по ключу оставляет левый порядок и дописывает ID только справа; приоритет не меняет эту последовательность.

Точные числа и буквальные ключи

Числа не проходят через преобразование с плавающей точкой. Числовые ID сравниваются по математическому значению, включая огромные показатели степени; исходная запись выбранного числа сохраняется. Ключи сохраняют порядок источника, в том числе пустые, похожие на числа и __proto__.

Понятные источники конфликтов

Каждый конфликт ключей содержит итоговый Pointer и два независимых Pointer источников. Значения показаны ограниченными фрагментами. Замена контейнера — одно решение, а не вымышленное объединение каждого потомка. Полный результат отделён от отчёта.

Точные границы вместо догадок

Собственные правила, а не стандарт patch
Null остаётся значением и не удаляет ключ. Допускается любой корректный корень JSON. Разные типы выбираются целиком по приоритету. Инструмент не создаёт и не выполняет RFC 7396 Merge Patch или RFC 6902 JSON Patch и не упаковывает конфликтующие значения в массив.
Ограничения входа и выхода
Каждый вход и отформатированный выход ограничены 500 000 символами, 50 000 узлами и глубиной 100. Запись числа — до 1 000 символов. Комментарии, завершающие запятые, BOM и повторные ключи запрещены. Выход проверяется заново; частичный успех скачать нельзя.
Неоднозначные ID не принимаются
Поле ID должно иметь непустое прямое имя. Проверяются только парные массивы, фактически участвующие в объединении, в том числе пара с одним пустым массивом. Односторонние массивы копируются. Проверяемые элементы — объекты с уникальными строковыми или числовыми ID; null, отсутствие и повторы недопустимы.
Равенство и подсчёт конфликтов
Равенство игнорирует порядок ключей объекта, но учитывает порядок массива. 1, 1.0 и 1e0 равны, как и -0 с 0; строки не равны числам. Равные атомарные значения сохраняют предпочтительную исходную запись. Записи с совпавшим ID выбираются целиком в поверхностном режиме и объединяются по полям в глубоком.
Бюджеты и неподдерживаемые действия
Допускается до 5 000 конфликтов. Суммарные пути обхода и сохранённые фрагменты значений имеют отдельные бюджеты по 2 000 000 символов; пути без конфликтов тоже учитываются. Нет слияния по индексу, удаления дублей, вложенных выражений ID, импорта файлов, загрузки URL, автоматической сортировки или ручной правки отдельных конфликтов. Обрабатываются два вставленных документа за раз.

Объединение JSON: вопросы и ответы

При объединении массивов важна последовательность элементов или их позиции?

Объединение JSON не сопоставляет элементы по индексу. Соединение сохраняет левую последовательность и добавляет правую, включая повторы. Сопоставление по ключу связывает записи по ID, оставляет левый порядок и добавляет новые ID справа. Замена берёт предпочтительный массив целиком.

Как выбрать приоритет значений, если ключи совпадают?

По умолчанию побеждает правое значение; выберите левое, чтобы изменить решение. Конфликт возникает, когда нужно целиком выбрать одно из неравных значений. Уникальные поля сохраняются с обеих сторон, а направление соединения и порядок записей по ключу от приоритета не меняются.

Можно ли объединять документы с массивом на верхнем уровне?

Да, корнем может быть массив, объект или скаляр. Два корневых массива следуют выбранной стратегии, включая проверку ID при сопоставлении по ключу. Если типы корней различаются, выбирается целое значение предпочтительной стороны; null также считается обычным значением.

Как последовательно объединить три и более документа?

Получите первый результат, откройте предпросмотр его замены левого входа и примените. Вставьте следующий документ справа и запустите снова с нужными правилами. Это последовательная обработка двух входов, а не импорт пакета файлов. Отмена восстанавливает последнюю применённую замену.

В каком порядке будут расположены ключи результата?

Ключи левого объекта остаются в исходном порядке, новые ключи правого добавляются вслед за ними в правом порядке. Замена значения не переносит существующий ключ в конец. Это относится и к именам, похожим на числа: инструмент хранит порядок в дереве JSON, не полагаясь на перечисление обычного объекта JavaScript.

Результат объединения оказался неожиданным?

Проверьте следующий конфликт

Попробуйте Объединение JSON на примере, включите сопоставление по ключу и сравните исходные пути перед экспортом полного результата.