JSON Diff: JSON objektumok összehasonlítása

Illessz be két JSON dokumentumot, és pontosan látod, mi változott. Minden eltérés útvonal szerint jelenik meg, például $.users[2].email, a formázás vagy a kulcssorrend pedig sosem okoz téves riasztást.

A böngésződben futNincs regisztrációNincs feltöltés

A kulcsok sorrendje mindig figyelmen kívül marad.

Hogyan használd: JSON Diff

  1. Illeszd be bal oldalra az eredeti, jobb oldalra a módosított JSON-t, vagy nyiss meg két fájlt.
  2. A szintaktikai hibák sorral és oszloppal jelennek meg az egyes mezők alatt, így gyorsan javíthatod őket.
  3. Nézd meg a Módosult útvonalak táblázatot: minden sor megmutatja, hogy egy értéket hozzáadtak, töröltek vagy módosítottak, a régi és az új értékkel együtt.
  4. Jelöld be a Tömbsorrend figyelmen kívül hagyása opciót, ha a listák halmazok, például címkék vagy jogosultságok.
  5. Görgess az egymás melletti nézethez, hogy kontextusban lásd a változásokat, vagy másold ki a változáslistát JSON-ként.

Miért jobb a strukturális JSON diff a szöveges diffnél?

Egy egyszerű szöveges diff karaktereket és sorokat hasonlít össze, így két azonos adatot tartalmazó JSON fájl teljesen eltérőnek tűnhet, ha az egyik minifikált, másképp van behúzva, vagy más a kulcsok sorrendje. Ez az eszköz előbb mindkét dokumentumot feldolgozza, és az adatokat hasonlítja össze: az objektumokat kulcsonként, sorrendtől függetlenül, a számokat, stringeket, logikai értékeket és a null értéket pedig érték szerint. Csak a valódi változásokat jelzi.

Hogyan jelennek meg a változások?

Minden eltérés JSONPath-stílusú helyet kap, például $.owner.email vagy $.items[3].price, és a három típus egyikét:

  • hozzáadva: a kulcs vagy tömbelem csak a módosított JSON-ban létezik.
  • eltávolítva: csak az eredeti JSON-ban létezik.
  • módosítva: mindkettőben létezik, de az érték eltér, beleértve a típusváltozást is, például ha egy stringből szám lesz.

A tömböket leghosszabb közös részsorozat (LCS) algoritmus igazítja össze, így ha egy lista elejére beszúrsz egy elemet, az egyetlen hozzáadásként jelenik meg, ahelyett hogy minden következő elem módosítottnak számítana.

A tömbsorrend figyelmen kívül hagyása

Sok API olyan listákat ad vissza, amelyek sorrendjének nincs jelentése, például szerepköröket, címkéket vagy azonosítókat. Ha a Tömbsorrend figyelmen kívül hagyása be van kapcsolva, a tömbök gyűjteményként hasonlítódnak össze: egy elem csak akkor számít hozzáadottnak vagy eltávolítottnak, ha a másik oldalon nincs vele egyenlő párja. Az egymás melletti nézet ilyenkor rendezi a tömbelemeket, hogy az egyenlő listák egymás mellé kerüljenek.

Tipikus felhasználás

Hasonlítsd össze a staging és a production API-válaszait, ellenőrizd, mit változtatott egy migráció egy konfigurációs fájlban, nézd át két package.json vagy tsconfig fájl eltéréseit, és keresd meg a snapshot tesztek hibáit.

Gyakran ismételt kérdések

Számít a kulcsok sorrendje a JSON összehasonlításakor?
Nem. A JSON objektumok rendezetlenek, így a {"a":1,"b":2} és a {"b":2,"a":1} egyenlőnek számít. A tömbök sorrendje alapértelmezetten számít, mert a tömbök rendezettek, de ezt kikapcsolhatod a Tömbsorrend figyelmen kívül hagyása opcióval.
Feltöltődik a JSON-om egy szerverre?
Nem. Mindkét dokumentum feldolgozása és összehasonlítása a böngésződben történik. Semmi sem megy át a hálózaton, ezért az eszköz biztonságos tokeneket vagy ügyféladatokat tartalmazó API-válaszokhoz is.
Mit jelentenek az olyan útvonalak, mint a $.users[2].email?
A $ a dokumentum gyökere, a .users egy kulcs, a [2] pedig egy tömb harmadik eleme (az indexek 0-tól kezdődnek). A szóközt vagy speciális karaktert tartalmazó kulcsok szögletes zárójelbe kerülnek, például $["first name"].
Az 1 egyenlő az 1.0-val?
Igen. Mindkettő ugyanarra a számra képeződik le, ezért nem számítanak eltérésnek. Egy szám és egy string, például az 1 és az "1", különbözik, és módosításként jelenik meg.
Összehasonlíthatok kommenteket vagy záró vesszőket tartalmazó JSON-t?
A szabványos JSON ezeket nem engedi, ezért az ilyen bemenetet pontos sorral és oszloppal jelezzük. Távolítsd el a kommenteket vagy vesszőket, vagy előbb tisztítsd meg a dokumentumot a JSON formázóban.

Kapcsolódó eszközök