JSON: gegevens in een vorm die iedereen kan lezen

Zodra twee systemen met elkaar praten, moeten ze het eens worden over de vorm. De ene stuurt gegevens, de andere moet ze begrijpen. Zonder afspraak wordt dat een puinhoop van komma’s en aanhalingstekens waar niemand uitkomt. JSON is die afspraak, en het is er een die vrijwel iedereen gebruikt.

Je komt het tegen zodra er ergens een koppeling in het spel is. En vaker dan je denkt ook gewoon binnen je eigen website.

Ik gebruik het bij elke integratie die ik bouw. Een boekingssysteem dat beschikbaarheid teruggeeft, een boekhoudpakket dat facturen ophaalt, een reviewdienst die beoordelingen levert.

Het prettige is dat je het zelf kunt lezen. Loopt er iets mis in zo’n koppeling? Dan zie je in het antwoord meestal meteen waar het misgaat. Je hoeft geen programmeur te zijn om te herkennen dat er een veld ontbreekt.

JSON uitgelegd in het webdesign woordenboek van Project Direct
Gegevens in een vorm die mens en machine allebei kunnen lezen.

Wat is JSON?

JSON is een compacte notatie om gegevens uitwisselen tussen systemen. De naam staat voor JavaScript Object Notation.

Het komt uit JavaScript, maar het wordt inmiddels overal gebruikt. Elke moderne programmeertaal kan ermee overweg.

Hoe het eruitziet

Het werkt met paren van sleutel en waarde. Links staat de naam van een veld, rechts de inhoud. Bijvoorbeeld: plaats, en daarachter Hoorn.

Die paren staan tussen accolades. Meerdere items achter elkaar staan tussen blokhaken. Dat is eigenlijk alles wat je moet weten om het te kunnen lezen.

Waarom het populair werd

Om twee redenen. Het is een leesbaar formaat, dus je ziet in een oogopslag wat er staat. En het is compact, dus er gaat weinig data overheen.

De voorganger was XML, met openings- en sluitingstags om elk veld heen. Dat is uitgebreider en preciezer, maar ook een stuk zwaarder om te lezen en te versturen.

Voor de meeste koppelingen is JSON daarom de standaard geworden. Meer daarover lees je bij API.

Waar je het tegenkomt

Vier plekken op een gewone website

  1. Het antwoord van een endpoint bij een koppeling.
  2. Het bericht dat een webhook naar je toe stuurt.
  3. Instellingen van plugins en thema’s in je database.
  4. Gestructureerde gegevens voor zoekmachines in je paginacode.

Die laatste is er een die ondernemers raakt zonder dat ze het weten. Dat heet JSON-LD.

Gestructureerde gegevens

Met JSON-LD vertel je een zoekmachine expliciet wat er op je pagina staat. Dit is een bedrijf, dit zijn de openingstijden, dit is een veelgestelde vraag met dit antwoord.

Die gestructureerde gegevens maken het makkelijker om je inhoud te tonen in een rijker zoekresultaat. Op deze woordenboekpagina’s staat het ook.

Voor back-ups en verhuizingen

Veel systemen bieden exporteren en importeren in dit formaat aan. Handig als je van platform wisselt of gegevens wilt bewaren.

Let wel op wat er in zo’n bestand staat. Klantgegevens in een export op je bureaublad zijn een privacyrisico. Behandel het als wat het is. Namelijk een kopie van je database, met alles wat daarin staat. Meer over die kant lees je bij backend.

Het verschil met XML

XML doet hetzelfde werk maar met openings- en sluitingstags om elk veld heen. Dat is uitgebreider en preciezer, en tegelijk zwaarder te lezen.

Je komt het nog tegen bij banken, overheden en oudere systemen. Als ondernemer merk je dat verschil vooral in je offerte: zo’n koppeling kost meestal meer uren.

Als je het zelf moet bekijken

Onleesbaar geworden door alle tekens? Er zijn gratis hulpmiddelen die zo’n bestand netjes uitlijnen.

Je plakt het erin en krijgt een overzichtelijke boomstructuur terug. Bij een storing is dat vaak genoeg om de oorzaak aan te wijzen zonder programmeur.

Waarom dit formaat bleef

Omdat het weinig afspraken nodig heeft. Je hebt geen apart schema nodig om te beginnen. Bovendien kun je een antwoord gewoon openen en lezen.

Die eenvoud is precies waarom het overal is aangeslagen. Van een boekingssysteem tot een weerdienst: iedereen levert het zo aan.

Meer vragen over JSON

Dit zijn de vragen die ik hierover het vaakst krijg. Ik werk ze los uit.

  • Wat is JSON?
  • Hoe lees je een JSON-bestand?
  • Wat is het verschil tussen JSON en XML?
  • Waar kom je JSON tegen op je eigen website?
  • Kun je JSON gebruiken voor een back-up?
  • Wat is JSON-LD en waarom is dat nuttig?
Het werkt met paren van een sleutel en een waarde. Links staat de naam van een veld, rechts staat de inhoud. Bijvoorbeeld het woord plaats, en daarachter Hoorn. Die twee horen bij elkaar en worden gescheiden door een dubbele punt. Die paren staan tussen accolades. Meerdere items achter elkaar staan tussen blokhaken, gescheiden door komma’s. Dat is eigenlijk alles wat je moet weten om het te kunnen lezen. Je hoeft de structuur niet zelf te kunnen schrijven om te zien wat erin staat. Onleesbaar geworden door alle tekens? Er zijn gratis hulpmiddelen die zo’n bestand netjes uitlijnen. Je plakt het erin en krijgt een overzichtelijke boomstructuur terug. Dat is bij een storing vaak genoeg om de oorzaak te vinden. Vraag bij een storing om het ruwe antwoord van de koppeling. Vaak zie je daarin binnen een minuut welk veld ontbreekt of leeg blijft. Vraag daarbij ook om de statuscode, want die zegt vaak al genoeg over de oorzaak.
JSON is een compacte notatie om gegevens uit te wisselen tussen systemen. De naam staat voor JavaScript Object Notation. Het komt uit JavaScript, maar het wordt inmiddels overal gebruikt. Elke moderne programmeertaal kan ermee overweg. Zodra twee systemen met elkaar praten, moeten ze het eens worden over de vorm. De ene stuurt gegevens, de andere moet ze begrijpen. Zonder afspraak wordt dat een puinhoop. JSON is die afspraak geworden, en het is er een die vrijwel iedereen gebruikt. Je komt het tegen zodra er ergens een koppeling in het spel is. Het prettige is dat je het zelf kunt lezen zonder programmeur te zijn. Loopt er iets mis in een koppeling, dan zie je in het antwoord vaak meteen dat er een veld ontbreekt. Meer daarover lees je bij API. Je hoeft dit niet zelf te kunnen schrijven. Het helpt al enorm als je weet dat je het antwoord van een koppeling gewoon kunt openen en lezen.
Ze doen hetzelfde: gegevens gestructureerd doorgeven. Het verschil zit in de vorm en in het gewicht. XML werkt met openings- en sluitingstags om elk veld heen, net als HTML. Dat is uitgebreider en preciezer, maar ook een stuk zwaarder om te lezen en te versturen. JSON is compacter. Dezelfde gegevens nemen minder ruimte in en zijn sneller te verwerken. Voor de meeste moderne koppelingen is JSON daarom de standaard geworden. XML kom je nog tegen bij banken, overheden en oudere systemen. Als ondernemer merk je dit verschil alleen in de offerte. Een koppeling met een ouder systeem dat XML gebruikt, kost meestal meer uren dan een moderne koppeling. Vraag bij een offerte welk formaat de andere partij gebruikt. Dat antwoord verklaart een deel van het verschil in uren tussen twee aanbieders. Vraag ook of er documentatie beschikbaar is, want dat scheelt de helft van de uren. Dat scheelt vaak meer dan het verschil in uurtarief tussen twee bouwers.
Op vier plekken, en drie daarvan zie je nooit. In het antwoord van een koppeling, bijvoorbeeld als je site beschikbaarheid ophaalt bij een reserveringssysteem. In het bericht dat een webhook naar je toe stuurt, bijvoorbeeld bij een geslaagde betaling. In je database, waar plugins en thema’s hun instellingen in dit formaat opslaan. En in je paginacode, als gestructureerde gegevens voor zoekmachines. Dat heet JSON-LD. Die laatste raakt je zonder dat je het weet. Ermee vertel je een zoekmachine expliciet dat dit een bedrijf is, dit de openingstijden zijn en dit een veelgestelde vraag met dit antwoord. Op deze woordenboekpagina’s staat het ook. Controleer of je gestructureerde gegevens goed staan met de testtool van Google. Dat kost een minuut en het is een van de weinige dingen die je zelf kunt nakijken. Doe die controle opnieuw na elke grote wijziging aan je pagina-opbouw. Zo weet je zeker dat je zoekmachine ziet wat jij bedoelt.
Veel systemen bieden een export in dit formaat aan. Dat is handig als je van platform wisselt of gegevens los wilt bewaren. Je krijgt dan een bestand met al je items, netjes gestructureerd. Een ander systeem kan dat weer inlezen, mits de velden overeenkomen. Zie het alleen niet als vervanging van een echte back-up. Een export bevat je gegevens, maar niet je instellingen, je bestanden en je opmaak. Let daarnaast goed op wat er in zo’n bestand staat. Klantgegevens in een export op je bureaublad zijn een privacyrisico. Behandel het als wat het is: een kopie van je database. Bewaar het versleuteld en gooi het weg zodra je het niet meer nodig hebt. Meer over die kant lees je bij backend. Bewaar exports versleuteld en gooi ze weg zodra je ze niet meer nodig hebt. Een bestand met klantgegevens op je bureaublad is een risico dat je niet ziet. Spreek intern af wie zulke exports maakt en waar ze bewaard worden.
Wil je een koppeling met een ander systeem en weet je niet of het kan? Beschrijf je situatie via het formulier hieronder. Ik kijk of die partij een koppeling aanbiedt en wat er ongeveer bij komt kijken. Blijkt het niet rendabel, dan hoor je dat ook. Vermeld je plaats, dan weet ik meteen waar je zit.

Waar kan ik je mee helpen?