jsonyaml.de

Ratgeber · best practices

Wann YAML statt JSON? Die richtige Formatwahl in der Praxis

YAML glänzt bei Konfiguration, die Menschen lesen und pflegen, dank Kommentaren und Übersicht. JSON bleibt vorne bei APIs, Datenaustausch und strenger Werkzeug-Unterstützung. Ein Entscheidungsleitfaden mit konkreten Anwendungsfällen.

Jan-Tristan Rudat
Jan-Tristan RudatRedakteur · Datenformate & DevOps
Veröffentlicht am ·Zuletzt geprüft am

JSON oder YAML? Diese Frage taucht immer wieder auf, sobald du eine Konfigurationsdatei anlegst, eine Schnittstelle entwirfst oder Daten zwischen zwei Systemen austauschst. Beide Formate speichern dieselben Grundstrukturen (Objekte, Listen, Zeichenketten, Zahlen, Wahrheitswerte), und du kannst sie verlustfrei ineinander umwandeln. Trotzdem ist die Wahl nicht beliebig. Sie entscheidet darüber, wie angenehm sich deine Dateien pflegen lassen, wie sicher deine Werkzeuge damit umgehen und wie zuverlässig zwei Systeme sich verstehen.

Dieser Ratgeber gibt dir einen klaren Entscheidungsleitfaden an die Hand: Wann YAML die bessere Wahl ist, wann JSON gewinnt, wo die Grauzonen liegen und welchen Sicherheitsaspekt du bei YAML nie vergessen darfst.

Die Kernfrage: Maschine oder Mensch?

Am Anfang jeder Formatwahl steht eine einzige Leitfrage: Wer liest und schreibt diese Daten überwiegend, ein Mensch oder eine Maschine?

JSON wurde für den Datenaustausch zwischen Programmen entworfen. Die Syntax ist streng, kompakt und lässt kaum Interpretationsspielraum. Geschweifte Klammern, Anführungszeichen um jeden Schlüssel, Kommas zwischen den Elementen: Das ist unbequem für die Hand, aber ideal für einen Parser, der schnell und eindeutig arbeiten soll.

YAML dagegen wurde bewusst dafür gestaltet, dass Menschen es lesen und schreiben. Einrückung statt Klammern, keine Anführungszeichen-Pflicht, Kommentare erlaubt. Das macht YAML angenehm für Konfiguration, die du regelmäßig von Hand anfasst.

Merke dir die Faustregel: Je öfter ein Mensch die Datei direkt bearbeitet, desto eher spricht das für YAML. Je öfter nur Maschinen sie erzeugen und lesen, desto eher gewinnt JSON.

Wann YAML gewinnt

YAML spielt seine Stärken überall dort aus, wo Lesbarkeit und manuelle Pflege im Vordergrund stehen.

Konfigurationsdateien. Das ist die Paradedisziplin von YAML. Wenn du Einstellungen für eine Anwendung, ein Deployment oder eine Pipeline festlegst, willst du die Struktur auf einen Blick erfassen. Die Einrückung zeigt Verschachtelung direkt an, ohne dass du Klammern zählen musst. Viele DevOps-Werkzeuge haben YAML deshalb als Standard gewählt.

Wenn du Kommentare brauchst. Das ist oft das entscheidende Argument. JSON kennt in seiner Spezifikation (RFC 8259) keine Kommentare. YAML erlaubt sie mit dem Rautezeichen. Gerade in Konfigurationen ist es Gold wert, wenn du direkt neben einem Wert erklären kannst, warum er so gesetzt ist:

server:
  port: 8080        # Standard-Port, in Produktion via Umgebungsvariable überschrieben
  timeout: 30       # Sekunden, bewusst hoch wegen langsamer Uploads
  retries: 3

Diese Notizen überleben Wochen und Monate. Wer die Datei später öffnet, versteht die Absicht sofort.

Viel manuelle Pflege. Sobald ein Mensch eine Datei häufig editiert, wird die geringere Zeichen-Last von YAML spürbar. Keine schließenden Klammern, kein finales Komma-Problem am Ende einer Liste, weniger Anführungszeichen. Das senkt die Fehlerquote bei Handarbeit.

DevOps- und Infrastruktur-Werkzeuge. Ein großer Teil des Ökosystems rund um Container-Orchestrierung, Automatisierung und CI/CD-Pipelines setzt auf YAML als Konfigurationssprache. Wenn du in dieser Welt arbeitest, ist YAML oft schlicht die Sprache, die deine Werkzeuge sprechen. Mehr dazu findest du in unserem Ratgeber YAML in Config und DevOps.

Wann JSON gewinnt

JSON ist dort im Vorteil, wo Eindeutigkeit, Geschwindigkeit und breite Unterstützung zählen.

APIs und Schnittstellen. Wenn zwei Dienste über das Netz Daten austauschen, ist JSON der De-facto-Standard. Nahezu jede Web-API spricht JSON, jeder Browser kann es nativ verarbeiten. Für Anfragen und Antworten zwischen Systemen gibt es kaum einen Grund, davon abzuweichen.

Datenaustausch zwischen Systemen. Sobald Daten eine Grenze zwischen zwei unabhängigen Programmen überqueren, willst du ein Format ohne Interpretationsspielraum. JSON ist so streng definiert, dass die Wahrscheinlichkeit von Missverständnissen minimal ist. YAML hat mehr Freiheitsgrade, und genau diese Freiheit kann bei maschinellem Austausch zu Überraschungen führen.

Logs und Speicherung. Für zeilenweise geschriebene Protokolle (ein JSON-Objekt pro Zeile) ist JSON ideal, weil sich jede Zeile unabhängig parsen lässt. Auch als Speicherformat in Datenbanken und Message-Queues ist JSON etabliert.

Strenge Validierung. JSON Schema ist ein ausgereifter, weit verbreiteter Standard, um die Struktur von JSON-Daten zu prüfen. Wenn du garantieren musst, dass eingehende Daten exakt einem erwarteten Aufbau folgen, hast du mit JSON die reichhaltigeren Werkzeuge.

Breite Sprach-Bibliotheken. JSON-Unterstützung ist in praktisch jeder Programmiersprache Teil der Standardbibliothek, ausgereift und schnell. YAML-Parser gibt es zwar für alle gängigen Sprachen, sie sind aber seltener eingebaut und unterscheiden sich stärker im Funktionsumfang.

Wenn du die beiden Formate Punkt für Punkt gegenüberstellen willst, hilft dir unser Vergleich JSON gegen YAML weiter.

Grauzonen: Es kommt darauf an

Nicht jeder Fall ist eindeutig. Zwei typische Grauzonen tauchen immer wieder auf.

Editor- und Werkzeug-Einstellungen. Manche Editoren und Werkzeuge nutzen JSON für ihre Einstellungsdateien, andere YAML. Beides funktioniert. Wenn ein Mensch die Datei häufig anfasst, spricht die Lesbarkeit für YAML. Wenn das Werkzeug die Datei aber selbst schreibt und überschreibt, bleibt JSON pragmatisch, weil es die Kommentare ohnehin nicht bewahren müsste.

Paket-Manifeste. Dateien, die Abhängigkeiten und Metadaten eines Projekts beschreiben, sind ein Grenzfall. Werden sie überwiegend von Werkzeugen verwaltet und nur selten von Hand berührt, ist JSON in Ordnung. Werden sie oft manuell gepflegt und profitieren von Kommentaren, verschiebt sich das Bild Richtung YAML. Hier gibt es keine allgemeingültige Antwort, sondern nur die ehrliche Abwägung, wer die Datei wirklich pflegt.

Sicherheitsaspekt: YAML kann mächtiger sein, als du denkst

Ein Punkt, den du bei YAML nie übergehen darfst: Manche YAML-Parser können mehr, als nur Daten einzulesen. In einigen Bibliotheken erlaubt YAML das Erzeugen beliebiger Objekte oder sogar das Ausführen von Code, wenn die Datei entsprechende Anweisungen enthält. Lädst du eine YAML-Datei aus einer nicht vertrauenswürdigen Quelle mit einer solchen Funktion, öffnest du ein ernstes Sicherheitsloch.

Die Regel ist einfach und verbindlich: Wenn deine Bibliothek eine sichere Lade-Funktion anbietet (oft “safe load” genannt), nutze sie immer, sobald die Daten nicht aus deiner eigenen Hand stammen. Diese Funktion beschränkt YAML auf reine Datenstrukturen und verweigert alles Gefährliche. JSON hat dieses Problem naturgemäß nicht, weil es reines Datenformat ist und keine ausführbaren Konstrukte kennt. Wenn du also untrusted YAML verarbeitest, ist die sichere Lade-Funktion keine Option, sondern Pflicht.

Entscheidungstabelle

SituationEmpfehlungGrund
Konfiguration, die du oft von Hand pflegstYAMLLesbarkeit, Einrückung, weniger Tippfehler
Du willst Werte kommentierenYAMLJSON kennt keine Kommentare
DevOps-, CI/CD- und Infrastruktur-ConfigYAMLÖkosystem-Standard in diesem Bereich
Antworten und Anfragen einer Web-APIJSONDe-facto-Standard, nativ im Browser
Datenaustausch zwischen fremden SystemenJSONStreng definiert, kaum Interpretationsspielraum
Zeilenweise Logs, ein Datensatz pro ZeileJSONJede Zeile unabhängig parsebar
Strenge Struktur-Validierung nötigJSONReifes, weit verbreitetes JSON Schema
YAML aus fremder Quelle einlesenJSON, sonst safe-loadYAML-Parser können gefährlich mächtig sein
Editor-Settings, Paket-ManifesteKommt darauf anWer pflegt die Datei überwiegend?

Praktische Beispiele

Ein paar konkrete Situationen machen die Entscheidung greifbar.

Du legst die Konfiguration für den Start einer Anwendung an, die du im Team wartest und in der du Ports, Zeitgrenzen und Feature-Schalter regelmäßig anpasst. Hier ist YAML die richtige Wahl. Du bekommst Kommentare, eine übersichtliche Verschachtelung und weniger Reibung beim Editieren.

Du baust eine Schnittstelle, über die deine mobile App mit dem Server spricht. Jede Antwort wird von Programmcode erzeugt und von Programmcode gelesen, ein Mensch schaut höchstens beim Debuggen darauf. Hier ist JSON die klare Wahl: schnell, eindeutig, überall unterstützt.

Ein Zwischenfall aus der Praxis: Du übernimmst eine YAML-Konfiguration aus einem fremden Repository und lädst sie in dein Programm. Bevor du das tust, prüfst du, ob dein Parser eine sichere Lade-Funktion nutzt. Tut er es nicht, änderst du das, bevor die Datei jemals verarbeitet wird.

Und wenn du im Alltag schnell zwischen beiden Formaten wechseln willst, etwa um eine YAML-Config testweise als JSON zu betrachten oder eine API-Antwort in gut lesbares YAML umzuwandeln, kannst du das direkt im Browser auf jsonyaml.de erledigen. Die Umwandlung läuft lokal auf deinem Rechner, ohne dass Daten hochgeladen werden.

Achte beim Hin- und Herwandeln aber auf typische Stolperfallen, etwa bei Datentypen und Sonderzeichen. Was dabei schiefgehen kann und wie du es vermeidest, zeigt dir unser Ratgeber zu den Fallstricken der JSON-YAML-Konvertierung.

Fazit

Die Formatwahl ist keine Geschmacksfrage, sondern eine Frage des Einsatzzwecks. YAML gewinnt bei Konfiguration, die Menschen lesen und pflegen, weil es Kommentare erlaubt und übersichtlich bleibt. JSON gewinnt beim Austausch zwischen Systemen, bei APIs, Logs und überall dort, wo strenge Eindeutigkeit und breite Werkzeug-Unterstützung zählen. Und egal wofür du dich entscheidest: Wenn du fremdes YAML einliest, gilt safe-load ausnahmslos. Wenn du diese Leitplanken beachtest, triffst du in fast jedem Fall die richtige Wahl.

Hast du einen Fehler entdeckt oder einen Quellen-Hinweis für uns? Schreib gern an info@akara-solutions.de.

Quellen

  • YAML Specification 1.2.2 (yaml.org)
  • RFC 8259: JSON
  • The Twelve-Factor App: Config (12factor.net)

Korrekturen oder bessere Quellen? Schreib an info@akara-solutions.de. Änderungen landen mit Datum auf /korrekturen.

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige