JSON Diff: jämför JSON-objekt

Klistra in två JSON-dokument för att se exakt vad som ändrats. Varje skillnad listas med sökväg, som $.users[2].email, och formatering eller nyckelordning ger aldrig falsklarm.

Körs i din webbläsareIngen registreringInget laddas upp

Nyckelordning ignoreras alltid.

Så använder du JSON Diff

  1. Klistra in den ursprungliga JSON-koden till vänster och den ändrade till höger, eller öppna två filer.
  2. Syntaxfel visas under respektive ruta med rad och kolumn, så att du snabbt kan rätta dem.
  3. Läs tabellen Ändrade sökvägar: varje rad visar om ett värde lagts till, tagits bort eller ändrats, med gammalt och nytt värde.
  4. Markera Ignorera arrayordning när listorna är mängder, till exempel taggar eller behörigheter.
  5. Scrolla ner till vyn sida vid sida för att se ändringarna i sitt sammanhang, eller kopiera ändringslistan som JSON.

Varför en strukturell JSON-diff slår en textdiff

En vanlig textdiff jämför tecken och rader, så två JSON-filer med samma data kan se helt olika ut om den ena är minifierad, har annat indrag eller nycklarna i en annan ordning. Det här verktyget tolkar först båda dokumenten och jämför sedan datan: objekt jämförs nyckel för nyckel oavsett ordning, och tal, strängar, booleska värden och null jämförs efter värde. Endast verkliga ändringar rapporteras.

Hur ändringar rapporteras

Varje skillnad får en plats i JSONPath-stil, som $.owner.email eller $.items[3].price, och en av tre typer:

  • tillagd: nyckeln eller arrayelementet finns bara i den ändrade JSON-koden.
  • borttagen: den finns bara i den ursprungliga JSON-koden.
  • ändrad: den finns i båda men värdet skiljer sig, inklusive typbyten som att en sträng blir ett tal.

Arrayer matchas med en algoritm för längsta gemensamma delsekvens (LCS), så om ett element infogas i början av en lista rapporteras det som ett enda tillägg i stället för att alla följande element markeras som ändrade.

Ignorera arrayordning

Många API:er returnerar listor där ordningen saknar betydelse, som roller, taggar eller ID:n. Med Ignorera arrayordning aktiverat jämförs arrayer som samlingar: ett element räknas bara som tillagt eller borttaget om det saknar en likadan motsvarighet på andra sidan. Vyn sida vid sida sorterar då arrayelementen så att likadana listor hamnar i linje.

Typiska användningsområden

Jämför API-svar mellan staging och produktion, se vad en migrering ändrade i en konfigurationsfil, granska skillnader mellan två package.json- eller tsconfig-filer och felsök snapshot-tester.

Vanliga frågor

Spelar nyckelordningen roll när JSON jämförs?
Nej. JSON-objekt är oordnade, så {"a":1,"b":2} och {"b":2,"a":1} rapporteras som lika. Arrayordningen spelar däremot roll som standard eftersom arrayer är ordnade, men du kan stänga av det med Ignorera arrayordning.
Laddas min JSON upp till en server?
Nej. Båda dokumenten tolkas och jämförs i din webbläsare. Inget skickas över nätverket, vilket gör verktyget säkert för API-svar som innehåller tokens eller kunddata.
Vad betyder sökvägar som $.users[2].email?
$ är dokumentets rot, .users är en nyckel och [2] är det tredje elementet i en array (index börjar på 0). Nycklar med mellanslag eller specialtecken skrivs inom hakparenteser, som $["first name"].
Är 1 lika med 1.0?
Ja. Båda tolkas som samma tal, så de rapporteras inte som en skillnad. Ett tal och en sträng, som 1 och "1", är olika och rapporteras som ändrade.
Kan jag jämföra JSON med kommentarer eller avslutande kommatecken?
Standard-JSON tillåter inte dem, så sådan indata flaggas med exakt rad och kolumn. Ta bort kommentarerna eller kommatecknen, eller rensa dokumentet i JSON Formatter först.

Relaterade verktyg