JSON

JSON Diff / Compare

Сравнение двух JSON-документов — что добавлено, удалено или изменено, с точным путём к каждому отличию.


                        
                    

В отличие от обычного текстового diff, JSON Diff сравнивает два документа по структуре, а не по строкам: он понимает, что порядок ключей в объекте не имеет значения, и показывает точный путь (например, user.address.city) к каждому отличию.

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

Типичные сценарии

Что стоит помнить

Элементы массивов обычно сравниваются по позиции (индексу) — вставка одного элемента в начале может показать все следующие как «изменённые», хотя по сути они лишь сдвинулись.

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

Статья об этом инструменте: JSON Diff: чем структурное сравнение отличается от текстового

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

Как этот инструмент решает, что считать «отличием»?

Он рекурсивно сравнивает обе структуры JSON ключ за ключом и индекс за индексом, показывая добавленные, удалённые и изменённые значения — порядок ключей объекта не важен, но порядок элементов массива имеет значение.

Почему изменение порядка элементов массива отображается как изменение?

Массивы JSON упорядочены, поэтому перемещение элемента с индекса 2 на индекс 0 считается удалением и повторным добавлением, а не отсутствием изменений, даже если значения идентичны.

Отправляются ли мои данные JSON куда-либо для вычисления различий?

Нет. Сравнение выполняется полностью в вашем браузере — ни один файл не загружается на сервер.

Учитывается ли порядок ключей объекта в результате сравнения?

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

Можно ли сравнивать элементы массива не по позиции, а по идентификатору?

Это зависит от конкретного алгоритма сравнения. Простые diff-инструменты всегда сверяют элементы массива по индексу; более сложные пытаются сопоставить объекты по общему полю вроде id, чтобы корректнее показать вставку или удаление.

Статьи: JSON

JSON Formatter: форматирование, минимизация и валидация

Форматирование для читаемости, минимизация для размера, валидация для корректности — три разные задачи с JSON.

JSONPath: как искать данные в JSON без ручного парсинга

Как JSONPath позволяет достать нужные значения из большого JSON одним выражением вместо ручного обхода.

JSON Schema: как описать и проверить структуру JSON

Как JSON Schema позволяет автоматически проверить, соответствуют ли данные ожидаемому контракту.

JSON Flatten: превращение вложенной структуры в плоский список

Как глубоко вложенный JSON превращается в плоский список ключей вида user.address.city.

JSON Sort Keys: зачем сортировать ключи объекта

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

JSON Repair: почему JSON ломается и как это исправить

Типичные причины «сломанного» JSON и что автоматический ремонт может, а что не может исправить.

Mock JSON Generator: зачем нужны фейковые данные

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

JSON ↔ YAML/CSV/XML/TOML: когда и зачем конвертировать

Какие данные теряются при конвертации JSON в CSV и почему YAML и TOML популярны для конфигов.