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á

Pořadí klíčů se vždy ignoruje.

Jak používat: JSON Diff

  1. Vložte původní JSON vlevo a upravený JSON vpravo, nebo otevřete dva soubory.
  2. Chyby syntaxe se zobrazí pod každým polem s řádkem a sloupcem, takže je rychle opravíte.
  3. 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.
  4. Zaškrtněte Ignorovat pořadí v polích, když jsou seznamy množinami, například štítky nebo oprávnění.
  5. 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íčů?
Ne. Objekty JSON jsou neuspořádané, takže {"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?
Ne. Oba dokumenty se parsují a porovnávají ve vašem prohlížeči. Nic se neposílá po síti, takže je nástroj bezpečný i pro odpovědi API obsahující tokeny nebo zákaznická data.
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?
Ano. Obě hodnoty se rozparsují na stejné číslo, takže se nehlásí jako rozdíl. Číslo a řetězec, například 1 a "1", se liší a hlásí se jako změna.
Mohu porovnat JSON s komentáři nebo koncovými čárkami?
Standardní JSON je nepovoluje, takže takový vstup se označí s přesným řádkem a sloupcem. Odstraňte komentáře nebo čárky, nebo dokument nejprve vyčistěte v JSON formátovači.

Související nástroje