Сравнение JSON, XML и текста (diff)

Сравнение двух версий JSON, XML или текста: добавленные, удалённые и изменённые поля с путями и номерами строк.

Данные обрабатываются в браузере и никуда не отправляются

Формат
Массивы JSON
Пробелы в тексте

Было (слева)

Перетащите файл сюда или выберите на диске

Стало (справа)

Перетащите файл сюда или выберите на диске

Различия

Здесь появится результат

Введите данные слева - результат появится сразу

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

Вставьте две версии - слева «было», справа «стало» - различия появляются сразу. Формат определяется автоматически (JSON, XML или обычный текст), его можно задать вручную. Для JSON и XML сравнение идёт по смыслу, а не по символам: порядок ключей, пробелы и переводы строк не считаются различиями, а каждое различие показано с путём ($.items[1].price или /order/item[2]/@qty), старым и новым значением и номером строки. Текст сравнивается построчно, как git diff.

Для массивов JSON выберите режим: «По номерам» сравнивает элементы по позиции, «Без порядка» - как набор (удобно для списков, у которых порядок не важен). Для текста можно игнорировать различия в пробелах.

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

Вот что чаще всего сбивает при сравнении данных:

Порядок ключей - не различие

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

Массивы: по номеру или без порядка

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

Число и строка - разные значения

1 и "1" - разные значения, а 1 и 1.0 - одинаковые. Если интеграция вдруг стала присылать числа строками, это покажется как изменение типа.

В XML порядок разных элементов не учитывается

Одноимённые элементы сопоставляются по порядку (item[1], item[2]), а разные элементы между собой - независимо от того, кто идёт раньше. Пробелы, комментарии и порядок атрибутов не влияют на результат.

Пробелы и переводы строк в тексте

При построчном сравнении лишний пробел или другой перевод строки (Windows и Unix) выглядят как изменение всей строки. Включите «Игнорировать пробелы», чтобы увидеть только смысловые правки.

Разный формат форматирования

Если один JSON отформатирован, а другой записан в одну строку, текстовое сравнение покажет всё как различие. Выбирайте формат JSON или XML: структура сравнится без учёта форматирования.

Частые вопросы

Отправляются ли мои данные на сервер?

Нет - 100%. Сайт целиком статический, у него нет серверной части. Сравнение выполняется в вашем браузере.

Чем сравнение JSON лучше обычного текстового diff?

Обычный diff видит только строки: другой порядок ключей или форматирование - это «различия». Сравнение JSON понимает структуру: показывает, какое именно поле добавлено, удалено или изменено, и игнорирует форматирование.

Как сравнить ответы API до и после изменения?

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

Можно ли сравнить XML с разным оформлением?

Да: отступы, переводы строк, комментарии и порядок атрибутов не учитываются. Сравниваются имена элементов, атрибуты и текст.

Как работает построчное сравнение текста?

Используется алгоритм Майерса - тот же принцип, что в git diff: находится наибольшая общая последовательность строк, а всё остальное помечается как добавленное или удалённое. Длинные неизменённые участки сворачиваются.

Что делать, если тексты очень большие?

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

Можно ли скачать результат?

Да: кнопки «Копировать» и «Скачать» под результатом выгружают список различий в текстовом виде: + добавлено, - удалено, ~ изменено.

Похожие инструменты

Курс «Проектирование API и интеграций»

Глубокое погружение в REST, gRPC, SOAP, проектирование баз данных и брокеры сообщений (Kafka, RabbitMQ). Делегирование рутины нейросетям (ИИ). Перестанете бояться технических собеседований и начнете говорить с разработчиками на одном языке. Курс собран так, чтобы пробить зарплатный потолок и вырасти в грейде - ученики тому подтверждение.

Перейти к курсу на Stepik