JSON Diff: сравняване на JSON обекти
Поставете два JSON документа, за да видите точно какво се е променило. Всяка разлика е показана по път, например $.users[2].email, а форматирането или редът на ключовете никога не водят до фалшиви тревоги.
Работи в браузъраБез регистрацияНищо не се качва
Променени пътища
| Промяна | Път | Стара стойност | Нова стойност |
|---|
Как да използвате: JSON Diff
- Поставете оригиналния JSON вляво и променения вдясно или отворете два файла.
- Синтактичните грешки се показват под всяко поле с ред и колона, за да ги поправите бързо.
- Прегледайте таблицата Променени пътища: всеки ред показва дали стойността е добавена, премахната или променена, със старата и новата стойност.
- Отметнете Игнорирай реда в масивите, когато списъците са множества, например тагове или права.
- Превъртете до изгледа един до друг, за да видите промените в контекст, или копирайте списъка с промени като JSON.
Защо структурният JSON diff е по-добър от текстовия
Обикновеният текстов diff сравнява символи и редове, така че два JSON файла с едни и същи данни могат да изглеждат напълно различно, ако единият е минифициран, с различни отстъпи или с ключове в друг ред. Този инструмент първо парсира двата документа и сравнява данните: обектите се сравняват ключ по ключ независимо от реда, а числата, низовете, булевите стойности и null — по стойност. Отчитат се само реални промени.
Как се отчитат промените
Всяка разлика получава местоположение в стил JSONPath, например $.owner.email или $.items[3].price, и един от три типа:
- добавено: ключът или елементът на масива съществува само в променения JSON.
- премахнато: съществува само в оригиналния JSON.
- променено: съществува и в двата, но стойността се различава, включително промени на типа, например низ, станал число.
Масивите се подравняват с алгоритъм за най-дълга обща подредица, така че вмъкването на един елемент в началото на списък се отчита като едно добавяне, вместо всички следващи елементи да се маркират като променени.
Игнориране на реда в масивите
Много API връщат списъци, чийто ред няма значение, например роли, тагове или ID. С включено Игнорирай реда в масивите масивите се сравняват като колекции: елемент се брои за добавен или премахнат само ако няма равен съответстващ елемент от другата страна. Изгледът един до друг тогава сортира елементите на масивите, за да се подравнят еднаквите списъци.
Типични приложения
Сравнявайте отговори от API между staging и production, проверявайте какво е променила миграция в конфигурационен файл, преглеждайте разликите между два package.json или tsconfig файла и дебъгвайте snapshot тестове.
Често задавани въпроси
Има ли значение редът на ключовете при сравняване на JSON?
{"a":1,"b":2} и {"b":2,"a":1} се отчитат като равни. Редът в масивите по подразбиране има значение, защото масивите са подредени, но можете да го изключите с Игнорирай реда в масивите.Качва ли се моят JSON на сървър?
Какво означават пътища като $.users[2].email?
$ е коренът на документа, .users е ключ, а [2] е третият елемент на масив (индексите започват от 0). Ключове с интервали или специални символи се записват в скоби, например $["first name"].Равно ли е 1 на 1.0?
1 и "1", са различни и се отчитат като промяна.