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
Gewijzigde paden
| Wijziging | Pad | Oude waarde | Nieuwe waarde |
|---|
Zo gebruik je de JSON Diff
- Plak de originele JSON links en de gewijzigde JSON rechts, of open twee bestanden.
- Syntaxfouten worden onder elk veld getoond met regel en kolom, zodat je ze snel kunt oplossen.
- Bekijk de tabel Gewijzigde paden: elke rij toont of een waarde is toegevoegd, verwijderd of gewijzigd, met de oude en nieuwe waarde.
- Vink Arrayvolgorde negeren aan als lijsten verzamelingen zijn, bijvoorbeeld tags of rechten.
- 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?
{"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?
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?
1 en "1", zijn wel verschillend en worden als gewijzigd gemeld.