JSON Diff: porovnání JSON objektů
Vložte dva dokumenty JSON a uvidíte přesně, co se změnilo. Každý rozdíl je uveden cestou, například $.users[2].email, a formátování ani pořadí klíčů nezpůsobí falešné poplachy.
Běží v prohlížečiBez registraceNic se neodesílá
Změněné cesty
| Změna | Cesta | Stará hodnota | Nová hodnota |
|---|
Jak používat: JSON Diff
- Vložte původní JSON vlevo a upravený JSON vpravo, nebo otevřete dva soubory.
- Chyby syntaxe se zobrazí pod každým polem s řádkem a sloupcem, takže je rychle opravíte.
- Projděte tabulku Změněné cesty: každý řádek ukazuje, zda byla hodnota přidána, odebrána nebo změněna, se starou a novou hodnotou.
- Zaškrtněte Ignorovat pořadí v polích, když jsou seznamy množinami, například štítky nebo oprávnění.
- Sjeďte k zobrazení vedle sebe a uvidíte změny v kontextu, nebo zkopírujte seznam změn jako JSON.
Proč je strukturální JSON diff lepší než textový
Obyčejný textový diff porovnává znaky a řádky, takže dva soubory JSON se stejnými daty mohou vypadat úplně jinak, pokud je jeden minifikovaný, jinak odsazený nebo má klíče v jiném pořadí. Tento nástroj nejprve oba dokumenty rozparsuje a porovná data: objekty se porovnávají klíč po klíči bez ohledu na pořadí a čísla, řetězce, logické hodnoty a null podle hodnoty. Hlásí se jen skutečné změny.
Jak se změny hlásí
Každý rozdíl dostane umístění ve stylu JSONPath, například $.owner.email nebo $.items[3].price, a jeden ze tří typů:
- přidáno: klíč nebo prvek pole existuje jen v upraveném JSON.
- odebráno: existuje jen v původním JSON.
- změněno: existuje v obou, ale hodnota se liší, včetně změny typu, například řetězec, ze kterého se stalo číslo.
Pole se zarovnávají algoritmem nejdelší společné podposloupnosti, takže vložení jednoho prvku na začátek seznamu se ohlásí jako jediné přidání, místo aby se každý následující prvek označil jako změněný.
Ignorování pořadí v polích
Mnoho API vrací seznamy, jejichž pořadí nic neznamená, například role, štítky nebo ID. Se zapnutou volbou Ignorovat pořadí v polích se pole porovnávají jako kolekce: prvek se počítá jako přidaný nebo odebraný jen tehdy, když na druhé straně nemá shodný protějšek. Zobrazení vedle sebe pak prvky polí seřadí, aby se shodné seznamy zarovnaly.
Typické použití
Porovnání odpovědí API mezi stagingem a produkcí, kontrola, co migrace změnila v konfiguračním souboru, kontrola rozdílů mezi dvěma soubory package.json nebo tsconfig a ladění snapshot testů.
Časté dotazy
Záleží při porovnání JSON na pořadí klíčů?
{"a":1,"b":2} a {"b":2,"a":1} se hlásí jako shodné. Na pořadí v polích ve výchozím stavu záleží, protože pole jsou uspořádaná, ale můžete to vypnout volbou Ignorovat pořadí v polích.Odesílá se můj JSON na server?
Co znamenají cesty jako $.users[2].email?
$ je kořen dokumentu, .users je klíč a [2] je třetí prvek pole (indexy začínají od 0). Klíče s mezerami nebo speciálními znaky se zapisují do hranatých závorek, například $["first name"].Je 1 totéž co 1.0?
1 a "1", se liší a hlásí se jako změna.