Wat is JSON? Een begrijpelijke gids met voorbeelden
JSON (JavaScript Object Notation) is een eenvoudig tekstformaat om gestructureerde gegevens op te schrijven — dingen zoals een klant, een bestelling of een lijst met producten — als namen gekoppeld aan waarden. Het is makkelijk voor mensen om te lezen en makkelijk voor programma’s om te maken en te verwerken. Wanneer apps en diensten via het web gegevens uitwisselen, is JSON verreweg het meest gebruikte formaat.
Waarom JSON ertoe doet als je met AI bouwt
Je komt JSON voortdurend tegen, zelfs als je nooit code schrijft:
- API’s. Wanneer de schermen van je app gegevens laden uit de backend, of je backend een betaal-, e-mail- of AI-dienst aanroept, reizen de gegevens meestal als JSON. Zie wat een API is.
- Instellingenbestanden. Veel configuratiebestanden van projecten zijn JSON — bijvoorbeeld
package.json, dat de afhankelijkheden van een JavaScript-project opsomt. - Databases. Postgres kan JSON opslaan in een kolom (het type
jsonb) voor gegevens die niet in nette rijen en kolommen passen. Zie wat Postgres is. - AI-output. Als je wilt dat een AI-model iets teruggeeft dat een programma kan gebruiken — een lijst met tags, geëxtraheerde factuurvelden — vraag je meestal om JSON.
- Foutmeldingen en logs. Veel fouten komen als JSON binnen, en die lezen is vaak de snelste manier om te vinden wat er misging.
JSON kunnen lezen helpt je te controleren wat je app echt heeft ontvangen, een ontbrekend veld te zien en problemen precies te omschrijven aan je AI-appbouwer.
Een dagelijkse vergelijking
Denk aan een papieren formulier: Naam: ____, Telefoon: ____, Nieuwsbrief: ☐ ja ☐ nee. Elke invulling is een label met een waarde ernaast. JSON is dat formulier als tekst geschreven, in een strikte opmaak die een computer kan lezen zonder te raden. En net als formulieren kan JSON secties in secties hebben (een adresblok met straat, stad en postcode) en lijsten (meerdere telefoonnummers).
Hoe JSON eruitziet
Hier is één boeking in JSON:
{
"id": 5001,
"customer": "Lena Park",
"service": "Haircut",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["baardtrim", "hete handdoek"],
"contact": {
"email": "lena@example.com",
"phone": "+44 20 7946 0000"
}
}
Zo lees je het:
- Accolades
{ }omsluiten een object — een set naam-waardeparen. - Elk paar is
"naam": waarde, gescheiden door komma’s. - Vierkante haken
[ ]omsluiten een array — een geordende lijst. - Objecten en arrays kunnen in elkaar zitten, zoals
contactenextrasdoen.
De zes soorten waarden
JSON kent maar zes typen waarden. Die kleine lijst is een groot deel van de reden dat het overal werkt.
| Type | Voorbeeld | Opmerkingen |
|---|---|---|
| Tekst (string) | "Lena Park" | Altijd dubbele aanhalingstekens |
| Getal | 35.5, -2, 1e6 | Geen aanhalingstekens; geen valutasymbolen |
| Boolean | true, false | Kleine letters, geen aanhalingstekens |
| Null | null | „Geen waarde” |
| Object | { "city": "Leeds" } | Benoemde waarden |
| Array | [1, 2, 3] | Geordende lijst; items kunnen elk type zijn |
Er is geen datumtype. Datums worden als tekst geschreven, meestal in het ISO 8601-formaat zoals hierboven (2026-10-03T14:00:00Z, waarbij Z UTC betekent). Afspreken over dat formaat voorkomt een hele categorie tijdzonefouten.
De strenge regels (waar fouten vandaan komen)
JSON is minder vergevingsgezind dan het lijkt. Dit is allemaal ongeldig:
{ name: "Lena" } ← sleutel zonder dubbele aanhalingstekens
{ 'name': 'Lena' } ← enkele aanhalingstekens
{ "a": 1, "b": 2, } ← komma aan het eind
{ "a": 1 "b": 2 } ← ontbrekende komma
{ "a": 1 // opmerking } ← opmerkingen zijn niet toegestaan
De meeste „Unexpected token”-fouten die je ziet, zijn een van deze. Een JSON-validator of -formatter toont de exacte regel.
Een uitgewerkt voorbeeld: JSON door een app
Een klant boekt een kapsel in een salonapp. Hier duikt JSON op:
- Het boekingsformulier stuurt dit naar de backend van de app:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- De backend slaat de boeking op in de database en antwoordt met status
201 Createden:
{ "id": 5001, "status": "confirmed" }
- Als het tijdstip al bezet was, antwoordt het misschien met status
409 Conflicten:
{ "error": "slot_taken", "message": "Dat tijdstip is net geboekt. Kies alsjeblieft een ander." }
De pagina leest status of error en toont het juiste bericht. Als de pagina in plaats daarvan een leeg scherm toonde, zou het openen van de ontwikkelaarstools van de browser (tabblad Network) deze JSON laten zien — vaak de snelste aanwijzing voor wat er misging.
Belangrijke termen
| Term | Betekenis |
|---|---|
| Sleutel | De naam in een naam-waardepaar, zoals "email". |
| Parsen | JSON-tekst omzetten in gegevens die een programma kan gebruiken. |
| Serialiseren / stringify | Gegevens omzetten in JSON-tekst om te versturen of op te slaan. |
| Payload | De gegevens die in een verzoek of antwoord worden verstuurd. |
| Schema | Een beschrijving van de vorm die gegevens moeten hebben — welke velden, welke typen. JSON Schema is een standaardmanier om er een te schrijven. |
| JSONB | Het binaire JSON-kolomtype van Postgres, dat geïndexeerd en doorzocht kan worden. |
| NDJSON / JSON Lines | Eén JSON-object per regel, gebruikelijk voor logs en streaming. |
Veelvoorkomende misverstanden
- „JSON is JavaScript.” Het komt voort uit de syntaxis van JavaScript, maar het is taalonafhankelijk; Python, Java, C#, Go en de rest lezen het allemaal.
- „Getallen tussen aanhalingstekens zijn prima.”
"35"is tekst, geen getal. Door ze te mengen ontstaan bugs, zoals"35" + "5"dat"355"wordt. Geld wordt vaak beter opgeslagen als hele centen (3550) om afrondingsproblemen te vermijden. - „JSON is veilig omdat het alleen gegevens is.” JSON kan alles bevatten, inclusief geheimen. Zet geen API-sleutels in JSON dat naar de browser wordt gestuurd.
- „Zet alles in een JSON-kolom.” Handig voor flexibele extra’s, maar gegevens waarop je zoekt, filtert of joint, horen meestal in gewone kolommen.
- „De AI geeft altijd geldige JSON terug.” Modellen kunnen extra tekst toevoegen of het formaat breken. Veel providers bieden een modus voor gestructureerde output; je code moet wat terugkomt toch controleren.
Wat je aan je AI-appbouwer kunt vragen
- „Laat me een voorbeeld zien van de JSON die dit endpoint teruggeeft.”
- „Geef fouten terug als JSON met een
error-code en een voor mensen leesbaarmessage.” - „Sla datums op als ISO 8601-tekst in UTC en reken alleen op het scherm om naar lokale tijd.”
- „Sla prijzen op als gehele centen.”
- „Valideer binnenkomende JSON op de server en weiger verzoeken met ontbrekende of verkeerd getypeerde velden.”
- „Als je het AI-model aanroept, vraag om JSON in deze exacte vorm en controleer het voordat je het gebruikt.”
JSON in Mythex
Je hoeft in Mythex geen JSON met de hand te schrijven — je beschrijft wat je wilt en de agent schrijft de code die het verstuurt en leest. Het helpt wel om het te herkennen: als er iets misgaat, geeft het plakken van de JSON-fout in de chat de agent een precieze aanwijzing. Het REST-API-backendrecept in de documentatie vraagt er vanaf het begin om „duidelijke JSON-fouten”, en het recept elke API integreren behandelt het aanroepen van externe diensten. Voor het grotere plaatje, zie REST vs GraphQL en hoe je een AI-gebouwde app debugt.
Veelgestelde vragen
Wat is JSON in eenvoudige bewoordingen?
JSON (JavaScript Object Notation) is een tekstformaat om gestructureerde gegevens op te schrijven als namen en waarden, zoals "naam": "Lena". Bijna elke webAPI gebruikt het om gegevens heen en weer te sturen, en veel apps gebruiken het voor instellingen en opgeslagen gegevens.
Is JSON een programmeertaal?
Nee. JSON is een gegevensformaat, geen taal. Het kan op zichzelf niets doen — het beschrijft alleen gegevens. Hoewel het uit JavaScript komt, kan vrijwel elke programmeertaal het lezen en schrijven.
Wat is het verschil tussen JSON en een JavaScript-object?
Ze lijken op elkaar, maar JSON is strenger. In JSON moet elke sleutel tussen dubbele aanhalingstekens staan, tekst gebruikt dubbele aanhalingstekens, er zijn geen opmerkingen, geen komma’s aan het eind, en waarden zijn beperkt tot tekst, getallen, true, false, null, objecten en arrays.
Waarom zegt mijn JSON dat het ongeldig is?
De gebruikelijke oorzaken zijn een komma na het laatste item, enkele aanhalingstekens in plaats van dubbele, een ontbrekende komma tussen items, een niet-gesloten haakje of een opmerking. Plak het in een JSON-validator en die wijst de regel aan.