Сравнить два JSON
Кладёте два ответа API рядом — получаете список различий с полным путём до каждого поля: data.items[0].price. Порядок ключей в объекте значения не имеет, так что перестановка полей за различие не считается; для массивов порядок можно отключить отдельно. Служебные поля вроде updatedAt, requestId и подписи выбрасываются из сравнения списком исключений — иначе каждый ответ отличается от предыдущего и смотреть не на что. Различия разложены по видам: поле появилось, поле пропало, значение изменилось, поменялся тип. Разбор идёт в браузере, ответы никуда не отправляются.
| Путь | Что произошло | Было | Стало |
|---|
Виды различий
| Метка | Что означает |
|---|---|
| появилось | Поля не было в левом JSON, в правом оно есть |
| пропало | Поле было слева, справа его нет |
| изменилось | Поле на месте, значение другое |
| сменился тип | Было число, стала строка; был объект, пришёл null |
Как пользоваться
- Слева тот, что был, справа тот, что стал. Оба поля проверяются на разбор сразу, ошибка показывается под полем.
- Порядок элементов массива, регистр строк и числа-строки можно приравнять. По умолчанию сравнение строгое.
- Впишите их имена через запятую: updatedAt, requestId, signature. Поле с таким именем выпадает из сравнения на любой глубине.
- Каждая строка — один путь до поля, вид изменения и значения с обеих сторон.
Частые вопросы
Чем это отличается от сравнения двух текстов?
Текстовое сравнение работает построчно и считает различием любую перестановку и любой лишний пробел. JSON сравнивается по структуре: важны имена полей и значения, а порядок ключей и форматирование роли не играют. Поэтому два одинаковых по смыслу ответа, записанных по-разному, здесь окажутся одинаковыми.
Почему порядок в массиве по умолчанию важен?
В массиве порядок несёт смысл: список товаров в выдаче, шаги сценария, элементы меню. Если для вашей задачи это набор без порядка, включите отдельную настройку — тогда элементы будут сопоставляться по содержимому, а перестановка перестанет считаться различием.
Что означает «поменялся тип»?
Слева и справа одно и то же поле, но разного вида: было число 10, стала строка «10», или вместо объекта пришёл null. Такие расхождения выносятся отдельно, потому что они чаще всего и ломают разбор на стороне получателя, даже когда значение выглядит тем же самым.
Зачем исключать поля из сравнения?
Ответы API почти всегда содержат метки времени, идентификаторы запроса и подписи. Они меняются при каждом обращении, и без исключений список различий состоит из них одних. Убрав их, вы видите то, что действительно изменилось в данных.
Есть ли предел размера?
Около двух мегабайт на каждое поле и десять тысяч различий в выводе. На большем объёме вкладка начнёт подвисать, поэтому лишнее лучше отрезать заранее.
Инструмент показывает, какой JSON правильный?
Нет, он показывает разницу. Какая из сторон верная, знает только тот, кто ставил задачу: иногда изменение и есть ожидаемый результат, иногда оно и есть поломка.
Данные куда-то отправляются?
Нет. Разбор и сравнение идут кодом страницы, сетевых запросов при работе не происходит.
Похожие инструменты
Список в строку с разделителем и обратно. Переносы ↔ запятые/пробелы.
ОткрытьРазбить текст на частиДелит длинный текст на куски нужной длины: Telegram 4096, подпись 1024, ВК 4000, description 160, SMS 70. Не рвёт слова и предложения.
ОткрытьИзменить размер фотоПиксели вручную или готовый пресет: обложка ВК, превью YouTube, аватар, фото 3×4, печать 10×15. Пакетно, с обрезкой или полями.
ОткрытьТипографорКавычки-ёлочки «», дефис → тире, неразрывные пробелы после предлогов, чистка двойных пробелов. Аккуратная типографика для сайта.
ОткрытьГенератор sitemap.xmlСоберёт ссылки прямо с вашего сайта по адресу или сделает карту из готового списка URL. lastmod, changefreq, priority.
ОткрытьОбрезать строкиУдалить N символов с краёв, текст до/после символа, убрать приставку или окончание.
ОткрытьЕщё инструменты для SEO и маркетинга
Кластеризатор запросов, генераторы sitemap и robots.txt, минус-слова, разметка Schema.org и калькуляторы — в разделе инструментов.