JSON

JSON Diff / Compare

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


                        
                    

На відміну від звичайного текстового diff, JSON Diff порівнює два документи за структурою, а не за рядками: він розуміє, що порядок ключів в об’єкті не має значення, і показує точний шлях (наприклад, user.address.city) до кожної відмінності.

Як користуватися

Типові сценарії

Що варто памʼятати

Елементи масивів зазвичай порівнюються за позицією (індексом) — вставка одного елемента на початку може показати всі наступні як «змінені», хоча по суті вони лише зсунулися.

Порівняння структурне, а не текстове — два JSON з однаковими даними, але різним форматуванням чи порядком ключів, вважаються ідентичними.

Стаття про цей інструмент: JSON Diff: чим структурне порівняння відрізняється від текстового

Часті запитання

Що показує цей інструмент?

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

Чому переставлені елементи масиву показані як "змінені"?

Порівняння масивів зазвичай відбувається за позицією (індексом), а не за вмістом. Якщо елементи однакові, але йдуть у іншому порядку, diff покаже їх як зміну, а не як переміщення.

Чи передаються документи на сервер для порівняння?

Ні — порівняння повністю виконується у браузері на JavaScript, дані не залишають ваш пристрій.

Чи враховується порядок ключів об’єкта в результаті порівняння?

Ні, структурне порівняння дивиться лише на самі дані — наявність поля, його значення й тип. Порядок ключів у JSON-об’єкті семантично не значущий, тому не впливає на результат.

Чи можна порівнювати елементи масиву не за позицією, а за ідентифікатором?

Це залежить від конкретного алгоритму порівняння. Прості diff-інструменти завжди звіряють елементи масиву за індексом; складніші намагаються зіставити об’єкти за спільним полем на кшталт id, щоб коректніше показати вставку чи видалення.

Статті: JSON

JSON Formatter: форматування, мінімізація та валідація

Форматування для читабельності, мінімізація для розміру, валідація для коректності — три різні задачі з JSON.

JSONPath: як шукати дані у JSON без ручного парсингу

Як JSONPath дозволяє дістати потрібні значення з великого JSON одним виразом замість ручного обходу.

JSON Schema: як описати й перевірити структуру JSON

Як JSON Schema дозволяє автоматично перевірити, чи відповідають дані очікуваному контракту.

JSON Flatten: перетворення вкладеної структури у плаский список

Як глибоко вкладений JSON перетворюється на плаский список ключів виду user.address.city.

JSON Sort Keys: навіщо сортувати ключі об’єкта

Чому порядок ключів у JSON не регламентований, але сортування все одно буває корисним.

JSON Repair: чому JSON ламається і як це виправити

Типові причини «поламаного» JSON і що автоматичний ремонт може, а що не може виправити.

Mock JSON Generator: навіщо потрібні фейкові дані

Як мок-дані дозволяють почати розробку інтерфейсу ще до того, як готовий бекенд.

JSON ↔ YAML/CSV/XML/TOML: коли і навіщо конвертувати

Які дані губляться при конвертації JSON в CSV і чому YAML та TOML популярні для конфігів.