ГлавнаяИнструментыСравнить два JSON

Сравнить два JSON

Кладёте два ответа API рядом — получаете список различий с полным путём до каждого поля: data.items[0].price. Порядок ключей в объекте значения не имеет, так что перестановка полей за различие не считается; для массивов порядок можно отключить отдельно. Служебные поля вроде updatedAt, requestId и подписи выбрасываются из сравнения списком исключений — иначе каждый ответ отличается от предыдущего и смотреть не на что. Различия разложены по видам: поле появилось, поле пропало, значение изменилось, поменялся тип. Разбор идёт в браузере, ответы никуда не отправляются.

Вставьте оба JSON — сравнение пойдёт само.
ПутьЧто произошлоБылоСтало

Виды различий

МеткаЧто означает
появилосьПоля не было в левом JSON, в правом оно есть
пропалоПоле было слева, справа его нет
изменилосьПоле на месте, значение другое
сменился типБыло число, стала строка; был объект, пришёл null

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

  1. Слева тот, что был, справа тот, что стал. Оба поля проверяются на разбор сразу, ошибка показывается под полем.
  2. Порядок элементов массива, регистр строк и числа-строки можно приравнять. По умолчанию сравнение строгое.
  3. Впишите их имена через запятую: updatedAt, requestId, signature. Поле с таким именем выпадает из сравнения на любой глубине.
  4. Каждая строка — один путь до поля, вид изменения и значения с обеих сторон.

Частые вопросы

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

Текстовое сравнение работает построчно и считает различием любую перестановку и любой лишний пробел. JSON сравнивается по структуре: важны имена полей и значения, а порядок ключей и форматирование роли не играют. Поэтому два одинаковых по смыслу ответа, записанных по-разному, здесь окажутся одинаковыми.

Почему порядок в массиве по умолчанию важен?

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

Что означает «поменялся тип»?

Слева и справа одно и то же поле, но разного вида: было число 10, стала строка «10», или вместо объекта пришёл null. Такие расхождения выносятся отдельно, потому что они чаще всего и ломают разбор на стороне получателя, даже когда значение выглядит тем же самым.

Зачем исключать поля из сравнения?

Ответы API почти всегда содержат метки времени, идентификаторы запроса и подписи. Они меняются при каждом обращении, и без исключений список различий состоит из них одних. Убрав их, вы видите то, что действительно изменилось в данных.

Есть ли предел размера?

Около двух мегабайт на каждое поле и десять тысяч различий в выводе. На большем объёме вкладка начнёт подвисать, поэтому лишнее лучше отрезать заранее.

Инструмент показывает, какой JSON правильный?

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

Данные куда-то отправляются?

Нет. Разбор и сравнение идут кодом страницы, сетевых запросов при работе не происходит.

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

Ещё инструменты для SEO и маркетинга

Кластеризатор запросов, генераторы sitemap и robots.txt, минус-слова, разметка Schema.org и калькуляторы — в разделе инструментов.