Как сравнить два JSON-файла
- Вставьте исходный JSON слева, а изменённый — справа, или перетащите файл на каждую из сторон.
- Изучите сводку и список различий: каждое добавленное, удалённое или изменённое значение показано с путём, например
$.users[2].email. - Прокрутите вниз до сравнения в двух колонках, чтобы увидеть изменения в контексте. Отметьте Игнорировать порядок в массивах, если порядок элементов списка не важен.
Семантическое сравнение JSON вместо текстового diff
Обычный текстовый diff сообщает об изменении всякий раз, когда ключ переместился, отличаются отступы или число записано иначе. Этот JSON diff сравнивает сами данные:
- Порядок ключей игнорируется —
{"a":1,"b":2}равно{"b":2,"a":1}. - Форматирование игнорируется — пробелы, переносы строк и отступы не влияют на результат.
- Числа сравниваются по значению —
1.0равно1. - Массивы выравниваются — вставка одного элемента не помечает все последующие как изменённые, а изменённые объекты сопоставляются с наиболее похожими.
- Игнорировать порядок в массивах — массивы сравниваются как неупорядоченные коллекции; удобно для списков тегов, ID или прав доступа.
Как читать результаты сравнения
| Метка | Что означает | Путь указывает на |
|---|---|---|
| Добавлено | Значение есть только в изменённом JSON | его позицию в изменённом JSON |
| Удалено | Значение есть только в исходном JSON | его позицию в исходном JSON |
| Изменено | Ключ есть в обоих документах, но значение или тип отличаются | его позицию в изменённом JSON |
В режиме двух колонок оба документа форматируются с отсортированными ключами, чтобы совпадающие строки стояли друг напротив друга; длинные неизменённые фрагменты сворачиваются, если не снять флажок Скрыть неизменённые строки.
Часто задаваемые вопросы
Важен ли порядок ключей?
Нет. Объекты JSON по определению неупорядочены, поэтому при сравнении порядок ключей игнорируется. Массивы же упорядочены — если только вы не отметите «Игнорировать порядок в массивах».
Можно ли сравнить большие JSON-файлы?
Да. Сравнение выполняется в браузере и выводит первые 200 различий с кнопкой, чтобы показать все; в режиме двух колонок отображается до 5000 строк.
Как сравнить JSON в коде?
В Python равенство проверяется так: json.loads(a) == json.loads(b). В JavaScript встроенного глубокого сравнения нет; библиотеки вроде Lodash предлагают _.isEqual(a, b). В командной строке diff <(jq -S . a.json) <(jq -S . b.json) покажет отличающиеся строки.
Загружаются ли мои данные на сервер?
Нет. Оба документа сравниваются локально в вашем браузере и никогда не покидают ваше устройство.