DevToolBoxFREE
BlogAdvertise

YAML Syntax & Validierung: Häufige Fehler und Lösungen

9 Min. Lesezeitvon DevToolBox

YAML ist das Standard-Konfigurationsformat für Docker, Kubernetes und CI/CD-Pipelines. Trotz der menschenfreundlichen Syntax ist es überraschend fehleranfällig.

Wo YAML verwendet wird

  • Docker Compose
  • Kubernetes Manifeste
  • GitHub Actions / GitLab CI
  • Ansible Playbooks
  • Konfigurationsdateien

Grundlegende Syntaxregeln

Einrückung

YAML verwendet Leerzeichen (keine Tabs):

# ✅ Correct (2-space indentation)
server:
  host: localhost
  port: 8080
  database:
    name: myapp
    pool: 10

# ❌ Wrong (tab characters or inconsistent spaces)
server:
	host: localhost    # Tab character - INVALID!
   port: 8080        # 3 spaces - inconsistent!

Schlüssel-Wert-Paare

Durch Doppelpunkt und Leerzeichen getrennt:

# ✅ Correct
name: John Doe
port: 8080

# ❌ Wrong - missing space after colon
name:John Doe

Mehrzeilige Strings

YAML bietet zwei Block-Skalar-Stile:

# | (literal block) - preserves newlines
description: |
  This is line one.
  This is line two.
  Each newline is preserved.

# > (folded block) - folds newlines to spaces
description: >
  This is a long paragraph
  that will be joined into
  a single line.

Datentypen

TypSyntaxBeispiel
Stringplain, "quoted", 'quoted'name: John
Integer42, 0xFF, 0o77port: 8080
Float3.14, .inf, .nanpi: 3.14159
Booleantrue/falsedebug: true
Nullnull, ~, (empty)value: null
DateYYYY-MM-DDdate: 2026-02-10

Das "Norwegen-Problem"

In YAML 1.1 wird `NO` als boolean `false` interpretiert:

# ❌ YAML 1.1 interprets these as booleans!
country: NO        # → false
answer: yes        # → true
switch: on         # → true

# ✅ Fix: quote the values
country: "NO"      # → string "NO"
answer: "yes"      # → string "yes"
switch: "on"       # → string "on"

Sammlungen

# List (sequence)
fruits:
  - apple
  - banana
  - cherry

# Nested map
database:
  host: localhost
  port: 5432
  credentials:
    user: admin
    password: secret

# Inline / Flow style
fruits: [apple, banana, cherry]
point: {x: 10, y: 20}

Top 10 YAML-Fehler

#FehlerUrsacheLösung
1Tab-ZeichenTabs für EinrückungDurch Leerzeichen ersetzen
2Inkonsistente Einrückung2 und 4 Leerzeichen gemischtEinheitlich einrücken
3Fehlendes Leerzeichen`key:value`Leerzeichen nach `:` einfügen
4Ungequotete SonderzeichenWerte mit : oder # ohne AnführungszeichenIn Anführungszeichen setzen
5Boolean-Konvertierungyes/no als BooleanAnführungszeichen verwenden
6Strings mit DoppelpunktURLs brechenGesamten Wert quoten
7Doppelte SchlüsselGleicher Schlüssel zweimalDuplikate entfernen
8Nachfolgende LeerzeichenUnsichtbare LeerzeichenEditor konfigurieren
9Listen-EinrückungsfehlerItems nicht ausgerichtet`-` ausrichten
10Fehlender DokumenttrennerMehrere Dokumente ohne `---``---` hinzufügen

YAML vs JSON vs TOML

FunktionYAMLJSONTOML
Comments# supportNone# support
Multi-line strings| and >\\n only""" triple quotes
Data typesRich (dates, etc.)Basic (6 types)Rich (dates, etc.)
ReadabilityHighMediumHigh
Machine parsingComplexSimpleMedium
Best forConfig filesAPIs, data exchangeApp config

Best Practices

  • YAML-Linter in CI/CD verwenden
  • Leerzeichen im Editor anzeigen
  • 2 Leerzeichen verwenden
  • Mehrdeutige Strings quoten
  • Schema-Validierung nutzen
  • Dateien klein und modular halten

FAQ

Kann man Tabs in YAML verwenden?

Nein. YAML verbietet strikt Tab-Zeichen für die Einrückung.

Unterschied zwischen einfachen und doppelten Anführungszeichen?

Einfache: literale Strings. Doppelte: Escape-Sequenzen erlaubt.

Wie stellt man null dar?

`null`, `~`, oder leerer Wert.

Warum behandelt YAML "NO" als false?

YAML 1.1 behandelt yes/no als Boolean. YAML 1.2 erkennt nur true/false.

War das hilfreich?

Stay Updated

Get weekly dev tips and new tool announcements.

No spam. Unsubscribe anytime.

Partner Picks

Sponsor this article

Place your product next to this developer topic with tracked clicks.

Ask about article sponsorship

This site uses cookies for analytics and to display ads. By continuing to browse, you agree. Privacy Policy