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
Ændrede stier
| Ændring | Sti | Gammel værdi | Ny værdi |
|---|
Sådan bruger du JSON Diff
- Indsæt den oprindelige JSON til venstre og den ændrede JSON til højre, eller åbn to filer.
- Syntaksfejl vises under hvert felt med linje og kolonne, så du hurtigt kan rette dem.
- 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.
- Sæt flueben i Ignorér rækkefølge i arrays, når lister er mængder, f.eks. tags eller rettigheder.
- 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?
{"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?
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?
1 og "1", er forskellige og rapporteres som ændret.