Как сравнить два JSON и найти различия во вложенных объектах и массивах
Вставьте два корректных непустых JSON и запустите сравнение: инструмент сопоставит их разобранные структуры, включая вложенные объекты и массивы. Результат покажет, совпадают ли они, а при расхождениях сообщит их количество и типы.
Что сравнивает JSON Diff
JSON Diff предназначен для сопоставления двух фрагментов JSON, когда нужно понять, совпадает ли их разобранная структура и где именно появились изменения. Он подходит для проверки ответа API до и после обновления, сравнения двух конфигураций или контроля вложенных данных перед публикацией. Инструмент работает не как посимвольный дифф: сначала он разбирает корректный JSON, а затем сравнивает получившиеся объекты и массивы. Поэтому различия в оформлении текста JSON сами по себе не описываются как изменения структуры.
Для сравнения подготовьте два самостоятельных фрагмента JSON. Это могут быть объекты, массивы, строки, числа, логические значения или значение null, если они записаны как корректный JSON. Важна не длина текста, а возможность разобрать оба непустых ввода и сопоставить их содержимое, включая вложенные объекты и массивы.
У каждого поля есть отдельный необязательный ввод. Если нужно проверить только один сценарий, не оставляйте вторую часть пустой в надежде получить обычное сравнение: пустой или состоящий из пробелов ввод обрабатывается по специальной ветке.
Как сравнить два JSON
-
Подготовьте исходный JSON и его версию для проверки. Убедитесь, что каждый фрагмент представляет собой самостоятельный JSON-документ: кавычки, скобки, запятые и типы значений должны быть записаны корректно.
-
Вставьте первый фрагмент в одно текстовое поле, а второй в другое. Поля необязательны, однако для содержательного сравнения используйте два непустых ввода. Не добавляйте вокруг JSON пояснения, комментарии или служебный текст, если они не входят в допустимую запись JSON.
-
Запустите сравнение предусмотренным элементом управления. Инструмент сначала проверит, удаётся ли разобрать каждый непустой ввод. Если оба фрагмента корректны и не состоят только из пробелов, сравнение учитывает вложенные объекты и массивы, а не только верхний уровень.
-
Просмотрите итоговый признак совпадения и сведения о расхождениях. При различии результат также сообщает их количество. В зависимости от содержимого можно увидеть добавленное или удалённое свойство объекта, изменённое значение, другую длину массива либо различие в соответствующих позициях массива.
-
Если результат указывает на ошибку разбора, исправьте JSON в названной части и повторите проверку. При такой ошибке сравнение не формирует список различий. Если одна из частей пустая или содержит только пробелы, инструмент завершает обработку успешно, показывает отсутствие зарегистрированных различий, но одновременно указывает, что входы не совпадают. Это отдельное поведение пустого ввода, а не подтверждение равенства двух JSON-документов.
-
После исправлений запускайте сравнение снова. Для повторяемой проверки сохраняйте обе версии отдельно и меняйте только ту часть, которую нужно исследовать; так проще связать новый результат с конкретным изменением. Инструмент сообщает о структуре и различиях, но не предлагает способ исправления данных.
Как читать результат и учитывать ограничения
Сначала проверьте общий признак результата. Сообщение об идентичности означает, что разобранные структуры двух корректных непустых JSON совпали в рамках выполненного сравнения. Сообщение о различии показывает, что структуры не совпали; указанное количество помогает оценить объём обнаруженных расхождений, а их категории подсказывают, искать ли изменение свойства, значения, длины массива или позиции элемента.
Не смешивайте отсутствие списка различий с подтверждением совпадения. Для пустого или пробельного ввода результат успешен, но входы отмечаются как неидентичные и различия не сообщаются. Такой ответ говорит о специальной обработке незаполненной части, поэтому сначала проверьте, действительно ли оба фрагмента были вставлены.
Ошибка разбора означает, что хотя бы один непустой фрагмент не удалось интерпретировать как JSON. Пока синтаксическая проблема не исправлена, содержательное сравнение не выполняется, а сведения о различиях отсутствуют. После исправления повторите проверку с теми же двумя версиями, чтобы отделить ошибку записи от реального изменения структуры.
Результат следует понимать как сравнение разобранных JSON-структур, включая вложенные объекты и массивы. Он не является общим сравнением текста, не выполняет слияние, не создаёт исправление или рекомендацию по разрешению конфликта. Если нужно применить найденное изменение, это действие выполняется отдельно на основе ваших требований к данным.
Практический пример
Вы проверяете обновлённую конфигурацию службы и хотите убедиться, что изменение вложенного параметра обнаружено.
Вставьте первый объект с настройкой службы и второй объект, где значение вложенного свойства изменено, затем запустите сравнение и проверьте признак совпадения и сведения о различиях.
Результат укажет, что структуры неидентичны, сообщит количество расхождений и отнесёт изменение к изменённому значению свойства, если сравнение прошло успешно.
Ограничения
- Инструмент сравнивает структуры JSON, но не выполняет слияние, исправление или рекомендацию по разрешению найденных различий.
Частые ошибки
- Причина: в одно поле вставлен текст с пояснением, неполный JSON или только пробелы. Действие: удалите посторонний текст, проверьте синтаксис обеих частей и убедитесь, что оба ввода действительно заполнены перед повторным сравнением.
Частые вопросы
Сравнивает ли JSON Diff вложенные объекты и массивы?
Сравнение выполняется, если оба непустых ввода содержат корректный JSON. Инструмент сопоставляет разобранные структуры, включая вложенные объекты и массивы, а не только текстовую запись.
Что показывает результат при различии двух JSON?
При различиях результат сообщает, что структуры неидентичны, указывает количество расхождений и может описать добавленные или удалённые свойства, изменённые значения, длину массива и различия в соответствующих позициях.
Что произойдёт, если одно поле оставить пустым?
Пустой или состоящий только из пробелов ввод обрабатывается успешно: различия не сообщаются, но входы отмечаются как неидентичные. Поэтому для обычной проверки заполните обе части корректным JSON.