โ†Back to Blog
ยท9 min lezenยทDevelopers

JSON Bestanden Bewerken, Valideren en Converteren: Gids voor Developers

Waarom JSON het standaard dataformaat is geworden

JSON, voluit JavaScript Object Notation, is het meest gebruikte dataformaat op het web. Vrijwel elke moderne API communiceert in JSON. Configuratiebestanden zoals package.json, tsconfig.json en .eslintrc.json gebruiken het. Databases als MongoDB slaan data op in een JSON-achtig formaat. En zelfs niet-technische tools als Notion en Figma exporteren naar JSON.

De kracht van JSON zit in de eenvoud. Er zijn maar zes datatypen: objecten, arrays, strings, getallen, booleans en null. De syntax is voor mensen leesbaar en voor machines snel te parsen. Vergeleken met XML is JSON compacter en makkelijker te schrijven. Vergeleken met CSV kan JSON geneste data bevatten.

Voor Nederlandse developers die werken met de Belastingdienst API, iDEAL integraties, PostNL tracking of Bol.com marketplace API's is JSON dagelijkse kost. Al deze diensten sturen en ontvangen JSON. Een goed begrip van JSON tooling bespaart uren debug-tijd.

JSON formatteren en valideren

Ongeformateerde JSON is vrijwel onleesbaar. Een API response van een paar kilobyte is een ononderbroken stroom tekst zonder inspringingen of regelovergangen. Een JSON formatter lost dit op door de data netjes te structureren met inspringingen, waardoor de hierarchie zichtbaar wordt.

Validatie gaat een stap verder. Een JSON validator controleert of je data syntactisch correct is. Veelgemaakte fouten die een validator vangt: een trailing comma na het laatste element in een array of object, enkele aanhalingstekens in plaats van dubbele, ongeescapete speciale tekens in strings, en ontbrekende aanhalingstekens rond property namen.

Een subtiele maar veelvoorkomende fout is het gebruik van comments in JSON. In tegenstelling tot JavaScript ondersteunt JSON geen comments. Geen enkele variant: geen //, geen / / en geen #. Als je comments nodig hebt in een configuratiebestand, overweeg dan JSONC (JSON with Comments) dat door tools als VS Code wordt ondersteund, of gebruik een apart _comment veld.

JSON minification is het tegenovergestelde van formatteren: alle overbodige witruimte wordt verwijderd. Dit is belangrijk voor productie-omgevingen waar elke byte telt. Een geminified JSON bestand is 20-40% kleiner dan de geformateerde versie. Bij API responses die duizenden keren per seconde verstuurd worden, maakt dat verschil.

JSON converteren: CSV, XML en YAML

In de praktijk moet je regelmatig data converteren tussen formaten. Een klant stuurt een Excel bestand dat je als JSON in je API wilt laden. Een legacy systeem verwacht XML terwijl je applicatie JSON produceert. Een DevOps pipeline gebruikt YAML voor configuratie maar je tooling genereert JSON.

JSON naar CSV is de meest gevraagde conversie. CSV is handig voor spreadsheets en data-analyse. Let op: JSON met geneste objecten of arrays vertaalt niet een-op-een naar het platte CSV formaat. Geneste data wordt ofwel afgeplat met punt-notatie in kolomnamen, ofwel als JSON string in een kolom geplaatst.

JSON naar XML is relevant voor integraties met oudere systemen, SOAP webservices of Nederlandse overheids-API's die nog XML gebruiken. De conversie is meestal straightforward, maar let op dat XML attributen geen direct equivalent hebben in JSON. Sommige converters gebruiken conventies als @attributen om dit op te vangen.

JSON naar YAML is populair in de DevOps wereld. Kubernetes manifests, Docker Compose files, GitHub Actions workflows en Ansible playbooks gebruiken allemaal YAML. YAML is in feite een superset van JSON: elke geldige JSON is ook geldige YAML. De conversie voegt leesbaarheid toe door inspringingen in plaats van accolades en haakjes.

Bij elke conversie geldt: valideer het resultaat. Een online converter die 99% van de data correct omzet maar een edge case mist, kan uren debugging kosten als je het niet controleert.

Key Takeaway

In de praktijk moet je regelmatig data converteren tussen formaten.

JSON debugging: diff, path finder en schema validatie

Wanneer een API onverwachte resultaten geeft, is het eerste wat je doet de response vergelijken met wat je verwacht. Een JSON diff tool toont precies welke velden zijn toegevoegd, verwijderd of gewijzigd tussen twee JSON objecten. Dit is onmisbaar bij het debuggen van API integraties en bij het reviewen van configuratiewijzigingen.

JSON Path is een query-taal voor JSON, vergelijkbaar met XPath voor XML. Met een JSON Path expression kun je specifieke data uit een complex genest object halen. Bijvoorbeeld: $.users[*].address.city haalt alle steden op uit een lijst van gebruikers. Een JSON Path finder helpt je de juiste expression te bouwen door visueel door de structuur te navigeren.

Voor robuuste API integraties is JSON Schema validatie de professionele aanpak. Een JSON Schema definieert de verwachte structuur van je data: welke velden verplicht zijn, welke datatypen toegestaan zijn, welke waarden geldig zijn. Door binnenkomende data tegen een schema te valideren, vang je fouten op voordat ze problemen veroorzaken dieper in je applicatie.

Praktische debugging workflow: ontvang de API response, formatteer het voor leesbaarheid, vergelijk met de vorige werkende response via diff, gebruik path finder om het afwijkende veld te lokaliseren en valideer tegen je schema om te bepalen of de fout in de data of in je verwachting zit.

Praktische tips voor het werken met JSON

Bewaar je JSON altijd in UTF-8 encoding. De JSON specificatie schrijft dit voor en alle moderne tools verwachten het. Andere encodings kunnen problemen veroorzaken met Nederlandse tekens als e-trema, u-trema en diakritische tekens in namen.

Gebruik consistente naamgevingsconventies. De meest voorkomende conventies zijn camelCase en snake_case. Kies er een en houd je eraan. Mixen van conventies maakt code onderhoud lastiger en vergroot de kans op typfouten. De meeste JavaScript en TypeScript projecten gebruiken camelCase, terwijl Python API's vaak snake_case hanteren.

Wees voorzichtig met grote getallen in JSON. JavaScript kan integers boven 2 tot de macht 53 niet exact representeren, wat problemen kan geven bij database ID's of financiele berekeningen. Gebruik in die gevallen strings voor getallen, of werk met bibliotheken als BigInt.

Overweeg JSON Lines formaat voor grote datasets. In plaats van een grote array met duizenden objecten, bevat een JSON Lines bestand een JSON object per regel. Dit maakt streaming-verwerking mogelijk: je hoeft niet het hele bestand in geheugen te laden om het eerste record te verwerken.

Tot slot: gebruik altijd een JSON formatter voor configuratiebestanden in je projecten. Een geformatteerd bestand is niet alleen leesbaarder, het maakt ook de git diff bij wijzigingen een stuk duidelijker. Een wijziging in een geminified JSON bestand toont als een volledige regelwijziging, terwijl een geformatteerd bestand precies laat zien welk veld is aangepast.

Key Takeaway

Bewaar je JSON altijd in UTF-8 encoding.