Of je nu een webapplicatie configureert, gegevens uitwisselt tussen diensten, een spreadsheet-export analyseert of een API-respons leest, je zult gegevens tegenkomen die zijn opgeslagen in gestructureerde tekstformaten. De vier meest voorkomende zijn JSON, YAML, CSV en XML.
Elk formaat is ontworpen met verschillende doelen, en de juiste keuze hangt af van je toepassing. Dit artikel legt uit wat elk formaat is, hoe het eruitziet, wanneer je het moet gebruiken en hoe ze zich tot elkaar verhouden.
JSON — JavaScript Object Notation
JSON is het dominante formaat voor gegevensuitwisseling op het web geworden. Ondanks de naam is het taalonafhankelijk en wordt het overal gebruikt.
Syntaxisvoorbeeld:
{
"name": "Alice Martin",
"age": 34,
"skills": ["Python", "SQL", "Docker"],
"address": {
"city": "Lyon",
"country": "France"
}
}
Belangrijkste kenmerken:
- Sleutel-waardeparen met een schone, leesbare syntaxis
- Ondersteunt strings, getallen, booleans, arrays, objecten en null
- Geen commentaar toegestaan in standaard JSON
- Strikte syntaxis — afsluitende komma's en enkele aanhalingstekens zijn fouten
Veelvoorkomende toepassingen: REST API's, configuratiebestanden (package.json, tsconfig.json), NoSQL-databases (MongoDB), gegevensuitwisseling tussen frontend en backend.
Goed om te weten. De strikte syntaxis van JSON is zowel een sterkte als een zwakte. Het maakt het parsen betrouwbaar en ondubbelzinnig, maar het betekent ook dat een enkele ontbrekende komma of extra afsluitende komma het hele bestand ongeldig maakt.
YAML — YAML Ain't Markup Language
YAML is ontworpen als het meest leesbare dataserialisatieformaat mogelijk. Het gebruikt inspringing in plaats van haakjes en is bijzonder populair voor configuratiebestanden.
Syntaxisvoorbeeld:
name: Alice Martin
age: 34
skills:
- Python
- SQL
- Docker
address:
city: Lyon
country: France
Belangrijkste kenmerken:
- Op inspringing gebaseerde structuur (geen haakjes of accolades)
- Ondersteunt commentaar met
# - Ondersteunt alle JSON-gegevenstypen plus meer (datums, meerregelige strings)
- Gevoelig voor witruimte — verkeerde inspringing maakt het bestand ongeldig
Veelvoorkomende toepassingen: Docker Compose-bestanden, Kubernetes-manifesten, CI/CD-pipelines (GitHub Actions, GitLab CI), Ansible-playbooks, Hugo/Jekyll-configuratie.
YAML is een superset van JSON, wat betekent dat elk geldig JSON-document ook geldig YAML is. Echter, de flexibiliteit van YAML kan een tweesnijdend zwaard zijn — de impliciete typeconversie (bijvoorbeeld yes geïnterpreteerd als boolean true, of 3.10 dat 3.1 wordt) heeft veel subtiele bugs veroorzaakt.
CSV — Comma-Separated Values
CSV is het eenvoudigste gestructureerde dataformaat. Het slaat tabulaire gegevens op als platte tekst, waarbij elke regel een rij is en waarden worden gescheiden door komma's (of soms puntkomma's, tabs of andere scheidingstekens).
Syntaxisvoorbeeld:
name,age,city,country
Alice Martin,34,Lyon,France
Bob Dupont,28,Paris,France
Carol Smith,41,London,UK
Belangrijkste kenmerken:
- Extreem eenvoudig — gewoon tekst met scheidingstekens
- Geen gegevenstypen — alles is een string
- Geen standaardmanier om geneste gegevens weer te geven
- Geen officieel universele standaard (RFC 4180 bestaat maar wordt niet universeel gevolgd)
- Bestandsgroottes zijn erg klein
Veelvoorkomende toepassingen: Spreadsheet-exports, database-imports/-exports, data-analyse (pandas, R), eenvoudige gegevensuitwisseling, logbestanden.
De eenvoud van CSV is zijn grootste kracht en grootste beperking. Het is perfect voor platte, tabulaire gegevens maar kan geen hiërarchische structuren weergeven. Randgevallen (komma's in waarden, meerregelige velden, coderingsproblemen) maken het parsen complexer dan het aanvankelijk lijkt.
XML — Extensible Markup Language
XML was het dominante formaat voor gegevensuitwisseling voordat JSON het overnam. Het gebruikt een op tags gebaseerde syntaxis vergelijkbaar met HTML en ondersteunt complexe functies zoals schema's, namespaces en transformaties.
Syntaxisvoorbeeld:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Alice Martin</name>
<age>34</age>
<skills>
<skill>Python</skill>
<skill>SQL</skill>
<skill>Docker</skill>
</skills>
<address>
<city>Lyon</city>
<country>France</country>
</address>
</person>
Belangrijkste kenmerken:
- Op tags gebaseerde structuur met openings- en sluitingstags
- Ondersteunt attributen, namespaces, schema's (XSD) en transformaties (XSLT)
- Ondersteunt commentaar
- Zeer uitgebreid vergeleken met andere formaten
- Extreem goed gedefinieerde standaard met strikte validatie
Veelvoorkomende toepassingen: SOAP-webservices, enterprise-integraties, documentformaten (DOCX, SVG, RSS), configuratiebestanden in Java/.NET-ecosystemen, overheids- en financiële gegevensuitwisseling.
XML is uitgebreider dan JSON of YAML, maar de mogelijkheden voor schemavalidatie maken het onmisbaar in contexten waar gegevensintegriteit en formele contracten tussen systemen cruciaal zijn.
Vergelijking naast elkaar
| Kenmerk | JSON | YAML | CSV | XML |
|---|---|---|---|---|
| Leesbaarheid | Goed | Uitstekend | Goed (tabulair) | Redelijk |
| Uitgebreidheid | Laag | Laag | Zeer laag | Hoog |
| Commentaar | Nee | Ja | Nee | Ja |
| Geneste gegevens | Ja | Ja | Nee | Ja |
| Gegevenstypen | Basis | Uitgebreid | Geen (alles strings) | Via schema |
| Schemavalidatie | JSON Schema | Geen standaard | Nee | XSD |
| Bestandsgrootte | Klein | Klein | Kleinst | Groot |
| Parsesnelheid | Snel | Gemiddeld | Snel | Gemiddeld |
| Hoofddomein | Web API's | DevOps-config | Data/spreadsheets | Enterprise |
Wanneer welk formaat gebruiken
- Kies JSON wanneer je web-API's bouwt, configuratie opslaat voor JavaScript/TypeScript-projecten of gegevens uitwisselt tussen diensten. Het is de standaardkeuze voor de meeste moderne applicaties.
- Kies YAML wanneer je configuratiebestanden schrijft die mensen vaak zullen lezen en bewerken. De leesbaarheid en commentaarondersteuning maken het ideaal voor DevOps en infrastructure-as-code.
- Kies CSV wanneer je werkt met tabulaire gegevens, importeert/exporteert vanuit spreadsheets of databases, of wanneer de bestandsgrootte minimaal moet zijn. Vermijd het voor alles wat hiërarchisch is.
- Kies XML wanneer je werkt met enterprise-systemen, SOAP-API's of contexten die formele schemavalidatie vereisen. Het is ook de juiste keuze wanneer je documentgerichte markup nodig hebt (zoals SVG of RSS).
Converteren tussen formaten
Converteren tussen deze formaten is een veelvoorkomende taak. Een paar dingen om in gedachten te houden:
- JSON naar YAML (en vice versa) is meestal verliesvrij aangezien YAML een superset van JSON is.
- CSV naar JSON/YAML werkt goed voor platte gegevens maar vereist beslissingen over structuur voor geneste output.
- XML naar JSON kan informatie verliezen (attributen, namespaces, volgorde) omdat JSON geen equivalente concepten heeft.
- Elk formaat naar CSV werkt alleen als de gegevens plat zijn of zinvol kunnen worden platgeslagen.
Tip. Controleer altijd de output bij het converteren tussen formaten. Automatische conversies kunnen stilletjes gegevens verliezen, vooral bij XML-attributen, YAML-typeconversie of CSV-coderingsrandgevallen.
Verder lezen
ToolK.io biedt gratis tools om te converteren tussen JSON, YAML, CSV en XML, je gegevens te formatteren en valideren, en gerelateerde tutorials te verkennen voor het werken met gestructureerde data in je projecten.
