Перейти к содержимому
ToolMug

Сравнение JSON

Сравните две версии JSON и точно узнайте, что изменилось в конфиге, ответе API или файле данных. Различия выводятся по путям, например $.users[2].email, поэтому переставленные ключи и другое форматирование не считаются изменениями.

Работает в браузере — введённые данные никуда не загружаются

Вставьте JSON с обеих сторон, чтобы сравнить.

Как пользоваться

  1. Вставьте исходный JSON слева, а изменённый — справа.
  2. Выберите, важен ли порядок элементов в массивах.
  3. Просмотрите список добавленных (+), удалённых (−) и изменённых (~) значений или скопируйте его кнопкой «Копировать отчёт».

Описание параметров

Сравнивать по позиции
Элементы массивов сравниваются попарно по порядку. Поэтому вставка элемента в начало меняет все последующие позиции.
Без учёта порядка
Массивы рассматриваются как неупорядоченные наборы; выводятся только элементы, которые есть с одной стороны и отсутствуют с другой. Удобно для списков ID, тегов или записей.
Пути
Пути записываются в нотации JSONPath: $ — корень, .key — свойство, [0] — элемент массива, а ["a b"] — ключ, который не является простым именем.

Пример

Возьмём два документа, в которых ключи расположены в разном порядке, а некоторые значения отличаются:

{"name": "Ada", "age": 36, "tags": ["x", "y"], "address": {"city": "Rome"}, "first name": "A"}
{"age": 37, "name": "Ada", "tags": ["y", "x"], "address": {"city": "Rome", "zip": "00100"}, "first name": "B", "role": "admin"}

При сравнении по позиции результат такой:

Изменение Путь До После
~ $.age 36 37
~ $.tags[0] “x” “y”
~ $.tags[1] “y” “x”
+ $.address.zip “00100”
~ $["first name"] “A” “B”
+ $.role “admin”

Если включить «Без учёта порядка», два изменения в tags исчезнут, потому что оба массива содержат одни и те же два значения. Порядок ключей не влияет на результат ни в одном из режимов. Значение, у которого изменился тип, например число, ставшее строкой, или объект, ставший массивом, отображается как одно изменение по собственному пути.

Часто задаваемые вопросы

Чем это отличается от текстового сравнения?

Текстовый diff сравнивает строки, поэтому форматирование и порядок ключей отображаются как изменения. Сравнение JSON разбирает обе стороны и сравнивает сами данные.

Считаются ли 1 и "1" равными?

Нет. Число и строка — это разные значения JSON, поэтому изменение выводится с обоими значениями.

Загружаются ли мои данные на сервер?

Нет. Оба документа сравниваются в вашем браузере.

Конфиденциальность

Этот инструмент работает полностью в браузере. Ваши файлы и текст обрабатываются на вашем устройстве и никогда не загружаются на наши серверы.

Похожие инструменты