JSON Diff
Вставьте два JSON-документа и точно увидьте, какие ключи были добавлены, удалены или изменены между ними.
Как это работает
Обе стороны разбираются как JSON, затем сравниваются ключ за ключом и индекс за индексом. Ключи только справа — это добавления, ключи только слева — удаления, а ключи, присутствующие с обеих сторон с разными значениями, — изменения. Порядок ключей объекта не важен, важны только значения.
Как это работает
Обе стороны сначала проходят через JSON.parse, поэтому если одна из них не является допустимым JSON, вы получаете собственное сообщение об ошибке парсера, указывающее на проблему, а не бессмысленный diff. Затем сравнение рекурсивно обходит две разобранные структуры: для объектов берётся объединение обоих наборов ключей и рекурсия по каждому ключу, для массивов сравнение идёт индекс за индексом, а листовые значения считаются равными только при полностью идентичной сериализации. Каждое различие выводится в виде пути вроде user.address[1].zip, помеченного как добавленное, удалённое или изменённое, а затем суммируется в счётчики.
Поскольку сравнение выполняется по разобранным значениям, а не по тексту, форматирование становится невидимым: отступы, порядок ключей и различия в пробелах не создают никакого шума, что и есть весь смысл по сравнению с построчным текстовым diff. Компромисс, который стоит понимать, — это позиционное выравнивание массивов. Вставка одного элемента в начало длинного массива приводит к тому, что каждый последующий индекс сообщается как «изменённый», плюс одно добавление в конце. Когда вы видите стену изменённых записей, которые все выглядят сдвинутыми на единицу, читайте это как «что-то было вставлено или удалено в начале этого массива», а не как десятки независимых правок.
Разбор и сравнение полностью выполняются в JavaScript этой страницы. Откройте вкладку Network в DevTools и нажмите «Сравнить»: ни один запрос не передаёт ваш JSON, поэтому ответы API и конфигурационные файлы с секретами остаются на вашем компьютере.