Перейти до вмісту

Різниця JSON

Порівняйте структурно два документи JSON і подивіться кожне додане, вилучене та змінене значення за їхнім шляхом.

Введення
Змінено JSON
Вихід

Різниця JSON

Вставте оригінальний JSON у перше поле, а змінену версію — у друге, і інструмент повідомить про кожну різницю за своїм шляхом: + user.roles[2] = "admin" для додаткового значення, − user.legacyId для видаленого, ~ user.name: "Anna" → "Eva" для зміни. Порівняння є структурним, а не текстовим — обидва документи аналізуються, а їхні значення порівнюються рекурсивно, тому переформатування, відступи та порядок ключів об’єктів ніколи не вважаються відмінностями. Це саме те, що простий текстовий diff помиляється щодо JSON.

Звертайтеся до нього, коли дві відповіді API мають збігатися, але не збігаються: інсценування щодо виробництва, вчорашнє корисне навантаження проти сьогоднішнього, відповідь до та після розгортання. Це так само корисно для дрейфу конфігурації — двох експортованих конфігураційних файлів, які з часом розрослися — і для налагодження серіалізованого стану, де один змінений прапорець ховається в кілобайтах вкладених об’єктів.

Елементи масиву порівнюються за індексом, тому зміщений список відображається як серія змін. Якщо порядок справді не має значення — теги, списки дозволів — увімкніть «Ігнорувати порядок масивів», і масиви зіставлятимуться як мультимножини: повідомлятимуться лише про справді додані чи видалені елементи. «Показати незмінені значення» додатково перераховує кожен незмінений шлях, що перетворює вихідні дані на повний анотований опис документа. Формат виводу перетворює те саме порівняння на застосовний патч: JSON Patch за RFC 6902 з операціями add, remove і replace над шляхами JSON Pointer або merge patch за RFC 7396, де null позначає вилучений ключ. Елементи масиву вилучаються з кінця, щоб патч лишався чинним після кожного кроку, а перед кожною зміною можна додати операції test — на зміненому документі патч тоді впаде, а не перезапише чужу правку.

Обидва документи аналізуються та порівнюються повністю у вашому браузері. Нічого не завантажується, тому робочі дані, маркери та дані клієнтів у вашому JSON залишаються на вашому пристрої.

FAQ

Чим це відрізняється від текстової різниці?
Різниця в тексті порівнює рядки, тому переформатування або зміна порядку ключів виглядають як зміни. Цей інструмент аналізує обидва документи та структурно порівнює значення — повідомляються лише реальні відмінності в даних.
Чи має значення порядок ключів об’єктів?
Ні. {"a":1,"b":2} і {"b":2,"a":1} ідентичні. Об’єкти порівнюються за ключем, а не за позицією.
Як порівнюються масиви?
За індексом: третій елемент оригіналу порівнюється з третім елементом зміненого документа. Увімкніть «Ігнорувати порядок масивів», щоб зіставляти масиви як мультимножини, щоб зміна порядку не повідомлялася як різниця.
Що означають шляхи у вихідних даних?
Крапки опускаються в об’єкти, а дужки — в масиви — user.roles[2] — це третій елемент масиву ролей всередині користувача. Ключі, які не є простими ідентифікаторами, взяті в дужки.
Чи завантажено кудись мій JSON?
Ні. Обидва документи аналізуються та порівнюються повністю у вашому браузері та ніколи не залишаються на вашому пристрої.