Сравнение JSON Diff онлайн

Локальная обработка
app.diff.view

Данные также можно передать через #data={"name":"Ada"} или #url=... После чтения параметры сразу удаляются из адресной строки.

Вставьте два JSON в левый и правый столбцы: сравнение по структуре покажет, какие поля добавлены, удалены или изменены. Это удобнее текстового Diff, когда структура та же, а значения другие — обновление API, смена конфига. Перед релизом вставьте примеры ответов v1 / v2: так проще не пропустить вложенные поля, чем сравнивать сжатую одну строку в Git.

Смысловое сравнение

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

В результате отмечены добавления, изменения и удаления; можно оставить только один тип изменений.

Удобно для ревью изменений

Сразу видно, какие ключи изменились, и нужно ли править клиент. Смена типа с числа на строку или удаление поля надёжнее, чем просматривать 500 строк глазами.

Тестировщики могут сверить baseline с текущим ответом как выборочную регрессию.

Перед сравнением можно отсортировать

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

Чувствительные поля лучше замаскировать до сравнения, даже если страница ничего не загружает.

Пример

Слева A
{
  "name": "Alice",
  "age": 30,
  "tags": ["dev", "json"]
}
Справа B (изменения относительно A)
{
  "name": "Alice",
  "age": 31,
  "tags": ["dev", "tools"],
  "active": true
}
Считается ли порядок массива различием?

Сравнение идёт по позициям. Если списки отличаются только порядком элементов, это тоже будет отмечено.

Что делать с очень большим файлом?

Сравнение выполняется на вашем компьютере. Для большого объёма сначала вырежьте нужный фрагмент через JSONPath.

Что видно, если файлы полностью совпадают?

Появится сообщение, что оба JSON идентичны, без подсвеченных отличий.

Одинаковы ли null и отсутствующее поле?

Нет. Если с одной стороны null , а с другой ключа нет, они помечаются по-разному — и смысл другой.

Рекомендуемый процесс

  1. Подготовьте примеры старой (A) и новой (B) версии; при необходимости сначала отформатируйте каждую.
  2. Нажмите «Сравнить» и фильтруйте по добавлению / изменению / удалению.
  3. Запишите пути, которые нужны для CHANGELOG или тестовых утверждений.
  4. Если отличается только порядок ключей, сначала отсортируйте обе стороны на странице сортировки и сравните снова.

Diff отвечает на вопрос «чем отличаются две версии»; Schema — «соответствует ли договорённости». При обновлении API лучше делать оба шага.