tigtools

JSON Diff

Vložte dva dokumenty JSON a přesně uvidíte, které hodnoty se liší, s výpisem podle cesty, např. $.order.items[2].price.

Běží ve vašem prohlížeči Bez registrace

Porovnání polí
Zobrazit

Jak používat

  1. Vložte původní JSON vlevo a změněný JSON vpravo, případně vyzkoušejte příklad.
  2. Zvolte způsob porovnání polí: podle pozice, nebo párováním položek, aby vložená položka byla hlášena jen jednou.
  3. Čtěte rozdíly jako seznam nebo vedle sebe. Každý má cestu od kořene ($).
  4. Zkopírujte výstup a vložte jej do ticketu nebo revize kódu.

Jak to funguje

Oba dokumenty jsou analyzovány a porovnávány jako data, nikoli jako text. Objekty se porovnávají klíč po klíči, takže na pořadí klíčů a mezerách či odsazení nezáleží. Čísla se porovnávají podle hodnoty, takže 1 a 1.0 jsou si rovny.

Každý rozdíl má cestu zapsanou jako výraz JSONPath: $ je kořen, .name je vlastnost, [2] je index pole a klíče, které nejsou jednoduché názvy, se uvádějí v uvozovkách, jako v $["first-name"]. Hlásí se čtyři druhy rozdílů: přidáno (pouze vpravo), odebráno (pouze vlevo), změněno (stejný typ, jiná hodnota) a změna typu (například číslo 44.9 se stalo řetězcem "44.90" nebo se hodnota stala null). Pokud je přidán nebo odebrán celý objekt nebo pole, ohlásí se jednou na své vlastní cestě, nikoli zvlášť za každou vlastnost.

Pole se ve výchozím nastavení porovnávají podle pozice: položka 0 s položkou 0, položka 1 s položkou 1. Pokud je položka vložena na začátek, všechny pozdější položky pak vypadají jako změněné. Funkce „Párovat přesunuté položky“ nejprve zarovná obě pole pomocí nejdelší společné podposloupnosti stejných položek, takže vložení nebo odebrání je ohlášeno jen jednou a zbývající položky se spárují. Přidané položky používají svůj index vpravo, odebrané položky svůj index vlevo. Párování se přeskočí u velmi velkých polí (nad přibližně 2 miliony párů položek), která se pak porovnají podle pozice.

Cesty klíčů v seznamu jsou v rámci každého objektu řazeny abecedně. Zobrazí se až 2 000 rozdílů; zkopírovaný přehled vždy obsahuje všechny.

Příklady

Kontrola změny v API

Porovnejte včerejší a dnešní odpověď pro stejnou objednávku. Diff ukáže, že $.status se změnil z "pending" na "shipped", $.total změnil typ z čísla na řetězec, $.coupon byl odebrán a $.customer.phone byl přidán.

Odchylka konfigurace

Vložte konfiguraci JSON ze stagingu a z produkce. Protože se pořadí klíčů ignoruje, objeví se jen skutečné rozdíly, jako je $.cache.ttl 300 → 60, i když soubory uložily různé nástroje.

Seznamy s vloženou položkou

Do seznamu produktů přibyla nová položka na první místo. Při porovnání podle pozice vypadá každý produkt jako změněný; s možností „Párovat přesunuté položky“ je výsledkem jediné „Přidáno $[0]“.

Časté dotazy

Jak se to liší od textového diffu?

Textový diff porovnává řádky, takže změna pořadí klíčů nebo přeformátování se zobrazí jako změny. Tento nástroj porovnává analyzovaná data, takže se hlásí jen rozdíly v hodnotách, typech a struktuře.

Proč pole po jednom vložení zobrazí mnoho změn?

V režimu „Podle pozice“ se položky porovnávají na stejném indexu a vložení posune všechny následující položky. Přepněte na „Párovat přesunuté položky“, aby se nejprve zarovnaly shodné položky.

Jsou "1" a 1 považovány za stejné?

Ne. Jedna je řetězec a druhá číslo, takže rozdíl je hlášen jako změna typu. Hodnoty se stejným typem se porovnávají přesně.

Mohu porovnávat velmi velké soubory?

Soubory o velikosti několika megabajtů fungují, ale vše se zpracovává v paměti vašeho prohlížeče, takže velmi velké dokumenty mohou být na telefonech pomalé.

Soukromí

Oba dokumenty jsou analyzovány a porovnávány pouze ve vašem prohlížeči. Nic se nenahrává, neukládá ani nezahrnuje do analytiky.