JSON Diff: JSON-objecten vergelijken

Plak twee JSON-documenten om precies te zien wat er veranderd is. Elk verschil wordt per pad getoond, zoals $.users[2].email, en opmaak of volgorde van keys leiden nooit tot vals alarm.

Draait in je browserGeen account nodigNiets wordt geüpload

De volgorde van keys wordt altijd genegeerd.

Zo gebruik je de JSON Diff

  1. Plak de originele JSON links en de gewijzigde JSON rechts, of open twee bestanden.
  2. Syntaxfouten worden onder elk veld getoond met regel en kolom, zodat je ze snel kunt oplossen.
  3. Bekijk de tabel Gewijzigde paden: elke rij toont of een waarde is toegevoegd, verwijderd of gewijzigd, met de oude en nieuwe waarde.
  4. Vink Arrayvolgorde negeren aan als lijsten verzamelingen zijn, bijvoorbeeld tags of rechten.
  5. Scroll naar de weergave naast elkaar om de wijzigingen in context te zien, of kopieer de lijst met wijzigingen als JSON.

Waarom een structurele JSON-diff beter is dan een tekstdiff

Een gewone tekstdiff vergelijkt tekens en regels, dus twee JSON-bestanden met dezelfde data kunnen er totaal anders uitzien als er één geminificeerd is, anders inspringt of keys in een andere volgorde heeft. Deze tool parset eerst beide documenten en vergelijkt de data: objecten worden key voor key vergeleken, ongeacht de volgorde, en getallen, strings, booleans en null worden op waarde vergeleken. Alleen echte wijzigingen worden gemeld.

Hoe wijzigingen worden gemeld

Elk verschil krijgt een locatie in JSONPath-stijl, zoals $.owner.email of $.items[3].price, en een van drie types:

  • toegevoegd: de key of het array-element bestaat alleen in de gewijzigde JSON.
  • verwijderd: het bestaat alleen in de originele JSON.
  • gewijzigd: het bestaat in beide, maar de waarde verschilt, inclusief typewijzigingen zoals een string die een getal wordt.

Arrays worden uitgelijnd met een longest-common-subsequence-algoritme, dus het invoegen van één element aan het begin van een lijst wordt gemeld als één toevoeging, in plaats van elk volgend element als gewijzigd te markeren.

Arrayvolgorde negeren

Veel API's geven lijsten terug waarvan de volgorde geen betekenis heeft, zoals rollen, tags of ID's. Met Arrayvolgorde negeren aan worden arrays als verzamelingen vergeleken: een element telt alleen als toegevoegd of verwijderd als er aan de andere kant geen gelijk element tegenover staat. De weergave naast elkaar sorteert array-elementen dan zodat gelijke lijsten op één lijn komen.

Typisch gebruik

Vergelijk API-responses tussen staging en productie, controleer wat een migratie in een configuratiebestand heeft veranderd, bekijk verschillen tussen twee package.json- of tsconfig-bestanden en debug snapshottests.

Veelgestelde vragen

Maakt de volgorde van keys uit bij het vergelijken van JSON?
Nee. JSON-objecten zijn ongeordend, dus {"a":1,"b":2} en {"b":2,"a":1} worden als gelijk gemeld. De volgorde in arrays telt standaard wel mee, omdat arrays geordend zijn, maar je kunt dat uitzetten met Arrayvolgorde negeren.
Wordt mijn JSON naar een server geüpload?
Nee. Beide documenten worden in je browser geparsed en vergeleken. Er gaat niets over het netwerk, dus de tool is veilig voor API-responses met tokens of klantgegevens.
Wat betekenen paden als $.users[2].email?
$ is de root van het document, .users is een key en [2] is het derde element van een array (indexen beginnen bij 0). Keys met spaties of speciale tekens worden tussen haken geschreven, zoals $["first name"].
Is 1 gelijk aan 1.0?
Ja. Beide worden als hetzelfde getal geparsed, dus ze worden niet als verschil gemeld. Een getal en een string, zoals 1 en "1", zijn wel verschillend en worden als gewijzigd gemeld.
Kan ik JSON met commentaar of komma's aan het eind vergelijken?
Standaard-JSON staat die niet toe, dus zulke invoer wordt gemarkeerd met de exacte regel en kolom. Verwijder het commentaar of de komma's, of maak het document eerst op in de JSON Formatter.

Gerelateerde tools