Сравнение JSON

Сравните два JSON-объекта рядом. Автоформатирование, сортировка ключей и подсветка различий.

Как использовать

  1. Paste your first JSON into the left panel
  2. Paste your second JSON into the right panel
  3. Click Compare — both sides are auto-formatted and sorted
  4. Differences are highlighted: red for removed lines, green for added lines

Часто задаваемые вопросы

  • Does key order matter?

    No. Both JSON objects are sorted by keys before comparing, so differences in key order are ignored.

  • Can I compare nested objects?

    Yes. The diff works on the formatted text after sorting, so nested structures are fully compared.

  • What do the colors mean?

    Red lines exist only in the left (original) input. Green lines exist only in the right (modified) input. Unchanged lines have no highlight.

  • Is my data sent to a server?

    No. All processing happens entirely in your browser.

Зачем сравнивать JSON структурно

Работа с JSON-данными в разработке неизбежно порождает задачу сравнения: что изменилось между двумя версиями объекта конфигурации? Какие поля появились или исчезли в ответе API после обновления? Чем отличаются тестовые данные от эталонных?

На первый взгляд, для этой задачи достаточно обычного текстового diff — такого, как git diff или любой онлайн-сравнивалки. Но текстовый diff для JSON работает значительно хуже, чем структурный.

Почему текстовый diff недостаточен для JSON

Порядок ключей не имеет семантического значения

В JSON объект {"a": 1, "b": 2} семантически идентичен {"b": 2, "a": 1}. Однако текстовый diff сообщит об этом как о двух изменённых строках. При работе с API или базами данных порядок ключей может меняться из-за разных реализаций сериализаторов — и это не несёт никакой смысловой нагрузки.

Структурный JSON diff сортирует ключи перед сравнением, устраняя «ложные» различия.

Форматирование влияет на результат текстового diff

Один и тот же JSON может быть записан в одну строку (минифицированный) или с отступами. Текстовый diff между минифицированной и отформатированной версией покажет изменение каждой строки, хотя данные идентичны.

Вложенные структуры

JSON-объекты нередко содержат глубокую вложенность: объекты внутри массивов внутри объектов. Текстовый diff показывает изменения как строки, теряя контекст вложенности. Структурный diff сохраняет этот контекст.

Практические сценарии использования JSON diff

Отладка изменений API

При обновлении версии API или переходе на новый эндпоинт структура ответа может измениться. Быстро сравнить два JSON-ответа — стандартная задача при интеграционном тестировании.

Ревью конфигурационных изменений

Конфигурации приложений, манифесты Terraform, настройки AWS/GCP часто хранятся в JSON. Перед применением изменений важно точно понять, что именно меняется.

Валидация тестовых данных

В автоматизированном тестировании ожидаемый и фактический JSON-ответ сравниваются для проверки корректности. Визуальный diff помогает при отладке, когда тест падает из-за неожиданного изменения.

Миграции баз данных

NoSQL-базы (MongoDB, DynamoDB, Firestore) хранят документы в JSON/BSON. При изменении схемы данных полезно сравнить «до» и «после» для конкретного документа.

Интерпретация цветовой подсветки

При просмотре JSON diff цвета имеют стандартное значение:

  • Красный (удалено): строки или поля, присутствующие только в левом (исходном) JSON
  • Зелёный (добавлено): строки или поля, присутствующие только в правом (изменённом) JSON
  • Без подсветки: идентичные строки

Если строка изменилась (например, значение поля), она отображается как удаление старой и добавление новой — что является стандартным представлением в любом diff-инструменте.

Алгоритмы diff

Большинство текстовых diff-инструментов используют алгоритм Майерса (Myers diff algorithm), который минимизирует количество операций вставки/удаления. Для JSON это применяется после сортировки ключей и нормализации форматирования, что и даёт семантически точный результат.