JSON-sleutelsorteerder

Sorteer de sleutels van elk object in een JSON-document alfabetisch, recursief — voor schone diffs en overzichtelijke configuraties.

930 weergaven

Hoe het werkt

Plak JSON en de sleutels van elk object komen terug alfabetisch gesorteerd. Het belangrijke punt is dat deze sortering recursief is: de tool herschikt niet alleen de sleutels van het object op het hoogste niveau en stopt dan — hij gaat elk genest object binnen, op elke diepte, en alfabetiseert elk daarvan afzonderlijk. Alleen het buitenste niveau sorteren zou de innerlijke structuur van een document ongemoeid laten, wat het doel teniet doet voor alles complexer dan een plat object; JSON uit de praktijk (API-antwoorden, configuratiebestanden) is bijna altijd meerdere niveaus diep genest.

Neem bijvoorbeeld {"user":{"zip":"1","name":"A"},"active":true}: de tool verplaatst niet alleen active vóór user op het hoogste niveau — hij gaat ook het user-object binnen en verwisselt name vóór zip, wat {"active":true,"user":{"name":"A","zip":"1"}} oplevert. Arrays worden met rust gelaten: hun elementvolgorde blijft exact behouden, omdat de volgorde van een array semantisch betekenisvol is (arrays zijn per definitie geordend), terwijl de sleutelvolgorde van een object dat, volgens de JSON-specificatie, niet is.

Goed om te weten

Het belangrijkste gebruiksdoel is diffs en versiebeheervergelijkingen zinvol maken. Twee JSON-documenten die identieke gegevens bevatten maar geserialiseerd zijn met sleutels in een andere volgorde, produceren bij directe vergelijking een enorme, rommelige tekstdiff — elke regel lijkt anders, ook al is er in werkelijkheid niets veranderd. Beide eerst door deze sorteerder halen doet die ruis verdwijnen: met sleutels in dezelfde alfabetische volgorde toont een platte-tekstdiff alleen echte inhoudelijke wijzigingen, geen toevallige herschikking. Het is net zo nuttig voor het handmatig bewerken van configuratiebestanden of het makkelijker doorzoekbaar maken van een onbekend API-antwoord.

Veelgestelde vragen

Verandert dit de gegevens, of alleen de volgorde?

Alleen de sleutelvolgorde verandert — waarden, nesting en array-inhoud blijven ongewijzigd. JSON-objecten zijn volgens de specificatie ongeordend, dus dit is altijd een veilige, niet-brekende transformatie.

Geldt het sorteren ook voor geneste objecten, of alleen het bovenste niveau?

Het is volledig recursief — elk object op elke nestingsdiepte krijgt zijn eigen sleutels onafhankelijk gealfabetiseerd, niet alleen het buitenste. Alleen het bovenste niveau sorteren zou geneste objecten in hun oorspronkelijke, mogelijk inconsistente volgorde laten staan.

Wat als mijn JSON ongeldig is?

U krijgt een duidelijke parseerfout in plaats van een stille mislukking — los het aangegeven syntaxprobleem op en probeer het opnieuw.

Sorteert het ook arrays?

Nee — de volgorde van array-elementen blijft exact behouden, aangezien arrays per definitie geordend zijn en herordenen de betekenis zou veranderen. Alleen objectsleutels worden gealfabetiseerd.

Waarom zou ik JSON-sleutels sorteren voordat ik twee bestanden vergelijk?

Platte-tekst-diff-tools vergelijken regel voor regel, dus twee JSON-bestanden met identieke gegevens maar anders geordende sleutels zien er in een diff bijna volledig anders uit, ook al is er niets inhoudelijks veranderd. Door de sleutels van beide bestanden op dezelfde manier te sorteren, verdwijnt die ruis en blijft een diff over die alleen echte inhoudelijke wijzigingen weergeeft.

Reacties

Nog geen reacties — schrijf de eerste!

Vergelijkbare tools