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

Сравнение JSON— Найдите изменение в структуре

Вставьте оба документа JSON: результат обновится после паузы ввода. Отключите автоматическое сравнение, чтобы запускать его кнопкой.

Сравнение JSON

+ Добавлено: 2− Удалено: 1Изменено: 7

Обновлено

1 / 10

Только для чтения: форматирование и порядок записей согласованы по правилам сравнения. Исключённые пути скрыты; оригиналы не изменяются.

− Исходный JSON/users/0/id
+ Новый JSON/users/0/id

Загрузка сравнения…

{
  "users": [
    {
      "id": 1,
      "name": "Ada",
      "role": "reader"
    },
    {
      "id": 2,
      "name": "Lin",
      "role": "editor"
    }
  ],
  "version": 1,
  "updatedAt": "2026-09-01"
}
{
  "users": [
    {
      "id": 2,
      "name": "Lin",
      "role": "admin"
    },
    {
      "id": 1,
      "name": "Ada",
      "role": "reader"
    },
    {
      "id": 3,
      "name": "Sam",
      "role": "reader"
    }
  ],
  "updatedAt": "2026-09-10",
  "active": true
}

Данные остаются в этой вкладке браузера, без отправки и постоянного хранения.

Подробности структуры (10)
  • Корень
    • users
      • 0
        • Изменено

          Исходный JSON /users/0/id

          1

          Новый JSON /users/0/id

          2
        • Изменено

          Исходный JSON /users/0/name

          "Ada"

          Новый JSON /users/0/name

          "Lin"
        • Изменено

          Исходный JSON /users/0/role

          "reader"

          Новый JSON /users/0/role

          "admin"
      • 1
        • Изменено

          Исходный JSON /users/1/id

          2

          Новый JSON /users/1/id

          1
        • Изменено

          Исходный JSON /users/1/name

          "Lin"

          Новый JSON /users/1/name

          "Ada"
        • Изменено

          Исходный JSON /users/1/role

          "editor"

          Новый JSON /users/1/role

          "reader"
      • Добавлено

        Исходный JSON

        Отсутствует

        Новый JSON /users/2

        {"id":3,"name":"Sam","role":"reader"}
    • Удалено

      Исходный JSON /version

      1

      Новый JSON

      Отсутствует
    • Изменено

      Исходный JSON /updatedAt

      "2026-09-01"

      Новый JSON /updatedAt

      "2026-09-10"
    • Добавлено

      Исходный JSON

      Отсутствует

      Новый JSON /active

      true

После изменения сериализатора ответ API может выглядеть новым целиком: другой порядок ключей, другие отступы. Чтобы сравнить JSON по существу, нужно проверить наличие полей, их типы и значения. Сравнение JSON по структуре показывает только изменившиеся поля.

Попробуйте JSON Diff на примере списка пользователей. При сопоставлении по id перестановка записей перестанет скрывать различия JSON в правах доступа. Для полей со временем запроса можно задать исключения.

Сравнение JSON: находите значимые изменения

Сопоставляйте записи независимо от порядка

API может вернуть те же записи в другом порядке. Если у каждого объекта есть уникальный id, сравнение по ключу сначала сопоставляет записи, а затем проверяет поля. Изменение прав доступа остаётся заметным, а простая перестановка не создаёт множество лишних различий. Если порядок важен, используйте сравнение по позиции.

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

Исключайте часто меняющиеся поля

Новое значение updatedAt может отвлекать от изменения конфигурации. Исключите /updatedAt, чтобы пропустить это поле и его потомков, сохранив остальные различия. Исключения задаются точными путями JSON Pointer: выбирайте только ту ветвь, которую действительно не нужно проверять.

Два дерева данных с приглушёнными отметками времени и выделенным изменением в другой ветви.

Проверьте различия за три шага

01

Добавьте обе версии данных

Вставьте корректный JSON в оба редактора или загрузите пример для знакомства с деревом результатов. Автоматическое сравнение обновляет результат после паузы при вводе.

02

Выберите способ сопоставления

Для упорядоченных списков оставьте позиции, а для массивов объектов выберите уникальный ключ, например id. Укажите исключаемые пути, например /updatedAt, по одному на строку.

03

Изучите и сохраните результат

Откройте «Посмотреть сравнение»: удаления выделены красным, добавления — зелёным. Переходите между изменениями или смотрите исходные пути в подробностях структуры, затем скопируйте или скачайте отчёт.

Проверка с точными путями

Дерево затронутых ветвей

Раскройте ветвь, чтобы увидеть старое и новое значения. Каждое различие содержит JSON Pointer. При сопоставлении переставленных записей по ключу отображаются реальные индексные пути обоих документов.

Массивы по позиции или ключу

По умолчанию сравниваются элементы с одинаковым индексом. Режим ключа связывает объекты по непосредственному свойству, например id: одна лишь перестановка записей не считается правкой.

Отчёт вместе с условиями

Скопируйте или скачайте JSON со счётчиками и параметрами сравнения. Снимки значений хранятся как строки исходного JSON, поэтому при чтении отчёта большие числа не округляются.

Правила и ограничения

Строгий синтаксис и точные числа
Комментарии, завершающие запятые и повторяющиеся ключи останавливают проверку. Строка отличается от числа, null — от отсутствующего поля. Равные записи чисел, например 1 и 1.0, совпадают без преобразования в число с плавающей точкой.
Идентификаторы должны быть уникальными
У каждого объекта должно быть выбранное непосредственное свойство со строкой или числом, уникальным в массиве. Отсутствующие и повторные ID, а также смесь объектов и простых значений вызывают ошибку. Массивы без объектов сравниваются по позиции; 1 и "1" — разные ID.
Исключение пути скрывает всю ветвь
Укажите точный JSON Pointer в каждой строке, например /updatedAt. В имени ключа / записывается как ~1, а ~ как ~0. Маски и JSONPath не поддерживаются. В режиме ключа совпадение с индексным путём любой стороны исключает всю пару ветвей.
Счётчики относятся к ветвям
Добавление или удаление целого поддерева считается одним изменением, как и замена типа. Операции перемещения не создаются. Экспорт предназначен для просмотра: это не исполняемый патч RFC 6902. При исключении вложенных путей добавленные или удалённые контейнеры раскрываются: учитываются только оставшиеся дочерние элементы.
Ограниченная нагрузка
На вход: 500 000 кодовых единиц UTF-16, 50 000 узлов и глубина 100; на число — 1 000 символов. Более 5 000 различий останавливают сравнение без частичного отчёта. Дерево показывает по 100 записей, экспорт содержит все.

Сравнение JSON: частые вопросы

Как сравниваются вложенные структуры JSON?

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

В каком виде можно сохранить различия?

В JSON-отчёте с параметрами, счётчиками и списком различий. Значения до и после записаны строками JSON, чтобы сохранить точность чисел. Отчёт можно скопировать или скачать.

Как обнаружить изменения в ответах API?

Вставьте ответы до и после изменения в два редактора. При необходимости исключите путь с временной меткой. Сравнение обновится после паузы ввода; в ручном режиме нажмите «Сравнить», затем раскройте изменённые поля в дереве.

Как сопоставляются элементы массива?

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

Можно ли найти изменение по пути к полю?

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

Нашли ошибку в результате сравнения?

Запустите сравнение JSON

Загрузите пример и переключитесь на сопоставление по id: сравнение JSON перестанет считать перестановку записей изменением.