Naar hoofdinhoud springen
FreeOnlineTools Go
Nederlands
Vergelijking

JSON versus YAML: welk configuratieformaat moet u gebruiken?

Door {author} · Bijgewerkt op 2026-09-02

Snel antwoord

Gebruik JSON voor API's, data-uitwisseling en gevallen waar strikte parsing&validatie telt. Gebruik YAML voor configuratiebestanden, DevOps-manifesten en gevallen waar menselijke leesbaarheid en comments belangrijk zijn. YAML is een JSON-superset —elke geldige JSON is geldige YAML.

Invoering

JSON en YAML zijn beide mens-leesbare data-serialisatieformaten. JSON is strikt, minimaal en alomtegenwoordig in web-API's. YAML is een superset van JSON die comments, multiline strings, anchors en inspringing-gebaseerde structuur toevoegt —wat het populair maakt voor configuratiebestanden (Docker Compose, Kubernetes, CI/CD pipelines).

Stap voor stap

  1. Vergelijk syntaxis en leesbaarheid

    JSON gebruikt accolades en aanhalingstekens: {"key": "value"}. YAML gebruikt inspringing en dubbele punten: sleutel: waarde. YAML is overzichtelijker qua configuratie: er zijn geen aanhalingstekens nodig voor tekenreeksen, geen komma's tussen items, geen accolades. JSON is explicieter en minder foutgevoelig voor gegevensuitwisseling.

  2. Vergelijk functies

    YAML ondersteunt: opmerkingen (#), tekenreeksen met meerdere regels (|, >), ankers (&) en aliassen (*), meerdere documenten in één bestand (---) en complexe typen. JSON ondersteunt geen van deze - geen commentaar, geen strings met meerdere regels, geen referenties. De eenvoud van JSON is opzettelijk: het is een formaat voor gegevensuitwisseling, geen configuratietaal.

  3. Vergelijk veiligheid en paring

    JSON parseren is snel en veilig — JSON.parse is in elke JavaScript-engine ingebouwd. Het parseren van YAML is langzamer en complexer: de YAML-specificatie is meer dan 80 pagina's versus de 2 pagina's van JSON. YAML kent beveiligingsrisico's (miljard gelachaanvallen via ankers) die JSON niet kent. Gebruik altijd een veilige YAML-parser die ankers uitschakelt.

  4. Vergelijk het gebruik van ecosystemen

    JSON: REST APIs, package.json, tsconfig.json, NoSQL-databases, webapps. YAML: Docker Compose, Kubernetes-manifesten, GitHub-acties, Ansible-playbooks, CI/CD-configuraties, OpenAPI-specificaties. JSON domineert runtimegegevens; YAML domineert de configuratie.

  5. Beslis op basis van uw gebruiksscenario

    APIs, gegevensuitwisseling, NoSQL, status van de webapp: JSON. Configuratiebestanden, DevOps, CI/CD, infrastructuur-as-code: YAML. Als mensen het met de hand schrijven: YAML. Als machines het genereren en consumeren: JSON.

Voorbeelden

Dezelfde configuratie in JSON en YAML

Invoer: JSON: {"server": {"port": 8080, "host": "localhost"}} YAML: server:\n port: 8080\n host: localhost

Uitvoer: YAML is 30% korter en ondersteunt opmerkingen. JSON is strenger en universeel parseerbaar.

Veelvoorkomende problemen

  • YAML-inspringfouten: YAML gebruikt inspringing voor structuur, en een enkele verkeerde spatie verbreekt het parseren. Gebruik een editor met YAML-linting en gebruik altijd spaties, nooit tabs.
  • YAML miljardenlachaanval: YAML-ankers en aliassen kunnen exponentiële expansie creëren, waardoor DoS ontstaat. Gebruik een veilige YAML-parser die ankers uitschakelt (bijvoorbeeld yaml.safe_load in Python).
  • JSON heeft geen commentaar: de JSON-specificatie verbiedt commentaar, waardoor configuratiebestanden moeilijker te annoteren zijn. Gebruik YAML voor door mensen bewerkte configuraties, JSON voor door machines gegenereerde gegevens.
  • YAML impliciete typverrassingen: YAML converteert ja/nee automatisch naar booleans en 1.0 naar float, waardoor tekenreeksvelden kunnen worden verbroken - tekenreeksen expliciet worden geciteerd om onverwachte typedwang te voorkomen.

Tips

  • Gebruik YAML voor door mensen geschreven configuraties (Docker Compose, Kubernetes, CI/CD) en JSON voor door machines gegenereerde gegevensuitwisseling (APIs, NoSQL, app-status).
  • Gebruik altijd een veilige YAML-parser die ankers en aliassen uitschakelt. Gebruik nooit een algemene YAML-lader voor niet-vertrouwde invoer.
  • Wanneer u YAML naar JSON converteert, kunt u er rekening mee houden dat er opmerkingen, tekenreeksen met meerdere regels en ankers verloren gaan. JSON is een subset van YAML, en niet andersom voor functies.
  • YAML consistent met twee spaties laten inspringen: het combineren van tabs en spaties of het gebruik van inconsistente inspringing is de meest voorkomende YAML-parseerfout.

Gerelateerde hulpmiddelen

Gerelateerde gidsen

Referenties