JSON Diff: sammenlign JSON-objekter

Indsæt to JSON-dokumenter for at se præcis, hvad der er ændret. Hver forskel vises med sin sti, f.eks. $.users[2].email, og formatering eller nøglerækkefølge giver aldrig falske alarmer.

Kører i din browserIngen tilmeldingIntet uploades

Nøglernes rækkefølge ignoreres altid.

Sådan bruger du JSON Diff

  1. Indsæt den oprindelige JSON til venstre og den ændrede JSON til højre, eller åbn to filer.
  2. Syntaksfejl vises under hvert felt med linje og kolonne, så du hurtigt kan rette dem.
  3. Læs tabellen Ændrede stier: hver række viser, om en værdi er tilføjet, fjernet eller ændret, med gammel og ny værdi.
  4. Sæt flueben i Ignorér rækkefølge i arrays, når lister er mængder, f.eks. tags eller rettigheder.
  5. Rul ned til visningen side om side for at se ændringerne i kontekst, eller kopiér ændringslisten som JSON.

Hvorfor et strukturelt JSON-diff slår et tekst-diff

Et almindeligt tekst-diff sammenligner tegn og linjer, så to JSON-filer med de samme data kan se helt forskellige ud, hvis den ene er minificeret, indrykket anderledes eller har nøglerne i en anden rækkefølge. Dette værktøj parser først begge dokumenter og sammenligner dataene: objekter sammenlignes nøgle for nøgle uanset rækkefølge, og tal, strenge, booleans og null sammenlignes efter værdi. Kun reelle ændringer rapporteres.

Sådan rapporteres ændringer

Hver forskel får en placering i JSONPath-stil, som $.owner.email eller $.items[3].price, og en af tre typer:

  • tilføjet: nøglen eller array-elementet findes kun i den ændrede JSON.
  • fjernet: den findes kun i den oprindelige JSON.
  • ændret: den findes i begge, men værdien er forskellig, inklusive typeskift, f.eks. når en streng bliver til et tal.

Arrays justeres med en algoritme for længste fælles delsekvens, så indsættelse af ét element i starten af en liste rapporteres som én tilføjelse i stedet for at markere alle efterfølgende elementer som ændrede.

Ignorér rækkefølge i arrays

Mange API'er returnerer lister, hvor rækkefølgen ikke betyder noget, f.eks. roller, tags eller ID'er. Med Ignorér rækkefølge i arrays slået til sammenlignes arrays som samlinger: et element tæller kun som tilføjet eller fjernet, hvis det ikke har et tilsvarende element på den anden side. Visningen side om side sorterer så array-elementerne, så ens lister står ud for hinanden.

Typiske anvendelser

Sammenlign API-svar mellem staging og produktion, tjek hvad en migrering har ændret i en konfigurationsfil, gennemgå forskelle mellem to package.json- eller tsconfig-filer, og debug snapshottests.

Ofte stillede spørgsmål

Har nøglernes rækkefølge betydning, når man sammenligner JSON?
Nej. JSON-objekter er uordnede, så {"a":1,"b":2} og {"b":2,"a":1} rapporteres som ens. Rækkefølgen i arrays har som standard betydning, fordi arrays er ordnede, men du kan slå det fra med Ignorér rækkefølge i arrays.
Bliver min JSON uploadet til en server?
Nej. Begge dokumenter parses og sammenlignes i din browser. Intet sendes over netværket, hvilket gør værktøjet sikkert til API-svar med tokens eller kundedata.
Hvad betyder stier som $.users[2].email?
$ er dokumentets rod, .users er en nøgle, og [2] er det tredje element i et array (indekser starter ved 0). Nøgler med mellemrum eller specialtegn skrives i kantede parenteser, som $["first name"].
Er 1 lig med 1.0?
Ja. Begge parses til det samme tal, så de rapporteres ikke som en forskel. Et tal og en streng, som 1 og "1", er forskellige og rapporteres som ændret.
Kan jeg sammenligne JSON med kommentarer eller afsluttende kommaer?
Standard-JSON tillader dem ikke, så sådant input markeres med præcis linje og kolonne. Fjern kommentarerne eller kommaerne, eller ryd først op i dokumentet med JSON Formatter.

Relaterede værktøjer