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", відрізняються й показуються як зміна.