JSON

JSON Diff / Compare

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


                        
                    

Unlike a plain text diff, JSON Diff compares two documents by structure rather than by line: it understands that key order in an object doesn't matter, and it shows the exact path (e.g. user.address.city) to every difference.

How to use it

Common uses

Things to keep in mind

Array elements are usually compared by position (index) — inserting one element near the start can show every following item as "changed", even though they merely shifted.

The comparison is structural, not textual — two JSON documents with identical data but different formatting or key order are treated as the same.

Статья об этом инструменте: 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 популярны для конфигов.