JSON Compare: porovnání dvou JSON online

Porovnejte dva JSON strukturálně, ne po řádcích. Na pořadí klíčů nezáleží, rozdíly dostanete s cestou ke klíči i jako JSON Patch podle RFC 6902.

Zapnuté porovnává pole podle obsahu, takže přeházené prvky nejsou rozdíl. Vypnuté porovnává po indexech.

Názvy klíčů oddělené čárkou. Vynechají se v celém dokumentu, i ve vnořených objektech.

0Přidáno
0Odebráno
0Změněno
0Shodných hodnot

Rozdíly

Vložte oba dokumenty a rozdíly se vypíšou samy.
CestaZměnaPůvodní hodnotaNová hodnota

Operace jdou aplikovat v tomto pořadí — odebrání z pole se řadí od nejvyššího indexu.


Jak porovnat dva JSON online

  1. Vložte první dokument do levého pole a druhý do pravého.
  2. Rozdíly se vypíšou samy. U každého uvidíte cestu ke klíči, starou a novou hodnotu.
  3. Přepněte výstup na JSON Patch, pokud potřebujete rozdíly jako sadu operací podle RFC 6902.

Rozdíl mezi strukturálním a řádkovým porovnáním

Běžný diff porovnává soubory řádek po řádku. U JSONu to nefunguje dobře, protože pořadí klíčů v objektu nemá žádný význam. Když někdo dokument jen přeformátuje nebo klíče seřadí abecedně, řádkový diff ukáže stovky rozdílů, i když jsou data stejná.

Strukturální porovnání čte oba dokumenty jako datové stromy. Prohozené pořadí klíčů, jiné odsazení ani zalomení řádků ho nezajímají. Zajímá ho jen to, jestli na stejné cestě sedí stejná hodnota. Když potřebujete porovnat obyčejný text nebo kód, sáhněte po porovnávači textů.

Porovnání respektuje datové typy

Řetězec „1“ a číslo 1 jsou pro nástroj dvě různé hodnoty. Stejně tak null a nula, prázdné pole a prázdný objekt. Právě takový rozdíl bývá příčinou chyby, kterou v API hledáte hodinu.

U polí si můžete vybrat. Ve výchozím stavu se prvky porovnávají po indexech, takže vložení prvku doprostřed posune všechny následující a projeví se jako řada změn. Přepínač pořadí ignoruje a pak vidíte jen to, co skutečně přibylo nebo zmizelo.

Export rozdílů jako JSON Patch

JSON Patch je formát z RFC 6902. Popisuje rozdíl jako seznam operací add, remove a replace, které původní dokument promění v cílový. Hodí se, když nechcete posílat celý objekt, ale jen změnu, typicky v požadavku PATCH.

Cesty v patchi používají JSON Pointer podle RFC 6901, tedy zápis se lomítky místo teček. Nástroj vám ukáže obě notace, protože knihovny se v zápisu liší. Výsledek si můžete rovnou zkopírovat a poslat do JSON formátovače, pokud ho potřebujete zpřehlednit.

Časté otázky

Vadí, když mají dokumenty klíče v jiném pořadí?

Nevadí. Objekt je neuspořádaná množina dvojic klíč a hodnota, takže na pořadí nezáleží a nástroj ho ignoruje. Pokud vám dva dokumenty vyjdou jako shodné, opravdu nesou stejná data, jen jinak zapsaná.

Jak porovnat dva JSON soubory přímo v editoru?

Ve VS Code vyberte oba soubory v průzkumníku, klikněte pravým tlačítkem a zvolte porovnání vybraných. Z příkazové řádky poslouží jq, kterým dokumenty nejdřív normalizujete se seřazenými klíči a pak porovnáte přes diff. Obojí ale porovnává text, ne strukturu, takže rozdíl v odsazení uvidíte jako změnu.

Odesílají se moje data na server?

Ne, porovnání běží celé v prohlížeči. Můžete sem vložit i odpověď z produkčního API, aniž by opustila váš počítač.

Co když je jeden z dokumentů neplatný?

Nástroj napíše, na kterém řádku a sloupci chyba je, a počká, až ji opravíte. Nejčastěji jde o čárku za posledním prvkem nebo o jednoduché uvozovky, které JSON nedovoluje.