JSON
JSON Diff / Compare
Сравнение двух JSON-документов — что добавлено, удалено или изменено, с точным путём к каждому отличию.
В отличие от обычного текстового diff, JSON Diff сравнивает два документа по структуре, а не по строкам: он понимает, что порядок ключей в объекте не имеет значения, и показывает точный путь (например, user.address.city) к каждому отличию.
Как пользоваться
- Вставьте исходный JSON в одно поле, новый — во второе.
- Результат показывает добавленные, удалённые и изменённые поля с точным путём к каждому и старым и новым значением.
- Форматирование и порядок ключей не влияют на результат — сравнивается только сама структура данных.
Типичные сценарии
- Проверка, что именно изменилось в ответе API между двумя версиями или двумя запросами.
- Сравнение конфигурационных файлов (package.json, настроек приложения) между ветками или окружениями.
- Диагностика, почему тест не проходит: точное сравнение ожидаемого и фактического JSON-результата.
Что стоит помнить
Элементы массивов обычно сравниваются по позиции (индексу) — вставка одного элемента в начале может показать все следующие как «изменённые», хотя по сути они лишь сдвинулись.
Сравнение структурное, а не текстовое — два JSON с одинаковыми данными, но разным форматированием или порядком ключей, считаются идентичными.
Статья об этом инструменте: JSON Diff: чем структурное сравнение отличается от текстового
Часто задаваемые вопросы
Как этот инструмент решает, что считать «отличием»?
Он рекурсивно сравнивает обе структуры JSON ключ за ключом и индекс за индексом, показывая добавленные, удалённые и изменённые значения — порядок ключей объекта не важен, но порядок элементов массива имеет значение.
Почему изменение порядка элементов массива отображается как изменение?
Массивы JSON упорядочены, поэтому перемещение элемента с индекса 2 на индекс 0 считается удалением и повторным добавлением, а не отсутствием изменений, даже если значения идентичны.
Отправляются ли мои данные JSON куда-либо для вычисления различий?
Нет. Сравнение выполняется полностью в вашем браузере — ни один файл не загружается на сервер.
Учитывается ли порядок ключей объекта в результате сравнения?
Нет, структурное сравнение смотрит только на сами данные — наличие поля, его значение и тип. Порядок ключей в JSON-объекте семантически не значим, поэтому не влияет на результат.
Можно ли сравнивать элементы массива не по позиции, а по идентификатору?
Это зависит от конкретного алгоритма сравнения. Простые diff-инструменты всегда сверяют элементы массива по индексу; более сложные пытаются сопоставить объекты по общему полю вроде id, чтобы корректнее показать вставку или удаление.