Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Daten in JSON und YAML

Nach dieser Lektion: Ich kann Daten in JSON und YAML lesen und schreiben.

Lektion, 50 Min.Keine Befehle

Eine Bestellung, die man lesen kann

Priya bestellt im Webshop zwei Tees und einen Kuchen. Die Webseite schickt die Bestellung an das System der Küche.

Beide Programme müssen sie verstehen. Auch wer nachts einen Fehler sucht, muss sie lesen können.

Deshalb reist die Bestellung als einfacher Text in einer vereinbarten Form.

Am Ende dieser Lektion

Notiz

Ich kann Daten in JSON und YAML lesen und schreiben.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
JSONein Textformat für Daten aus Objekten und Listen
Objekteine Gruppe von Schlüsseln mit je einem Wert{"menge": 2}
Schlüsselder Name eines Werts in einem Objekt"menge"
ListeWerte in fester Reihenfolge, in eckigen Klammern["tee", "kuchen"]
Verschachtelungein Objekt oder eine Liste steht in einem anderen
YAMLein Format für dieselben Daten, das mit Einrückung arbeitet

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

JSON besteht aus Objekten und Listen

Geschweifte Klammern { } enthalten ein Objekt: Schlüssel mit Werten, etwa "kunde": "Priya".

Eckige Klammern [ ] enthalten eine Liste. Text steht in doppelten Anführungszeichen. Zahlen haben keine.

Ja und Nein heißen true und false. In Python macht json.loads aus JSON-Text Wörterbücher (dict) und Listen.

Eine Bestellung lesen

Code: python
import json

# Eine Bestellung, wie die Webseite des Ladens sie schickt.
text = '{"id": 1042, "kunde": "Priya", "bezahlt": true, "positionen": [{"name": "Tee", "menge": 2}, {"name": "Kuchen", "menge": 1}]}'

bestellung = json.loads(text)
print(bestellung["kunde"])
print(bestellung["bezahlt"])
print(bestellung["positionen"][0]["name"])

# Ihr Auftrag: Geben Sie die Menge des Kuchens aus.

Verschachtelung Schritt für Schritt

Die Bestellung enthält eine Liste namens positionen. Jede Position ist ein eigenes Objekt. Das ist Verschachtelung.

Zu einem Wert kommen Sie Schritt für Schritt. bestellung["positionen"] ist die Liste. [0] ist die erste Position, denn das Zählen beginnt bei 0. ["name"] ist ihr Name.

Beispiel: Wege in die Bestellung

Weg in PythonErgebnis
bestellung["id"]1042
bestellung["positionen"]Die Liste mit zwei Positionen
bestellung["positionen"][0]{"name": "Tee", "menge": 2}
bestellung["positionen"][0]["menge"]2
bestellung["positionen"][1]["name"]Kuchen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, JSON erlaube einfache Anführungszeichen, weil Python sie erlaubt. Das stimmt nicht: {'menge': 2} lässt json.loads scheitern. Nehmen Sie doppelte Anführungszeichen und setzen Sie nach dem letzten Eintrag kein Komma.

Ein Support-Ticket als JSON schreiben

Code: python
import json

ticket = {
    "id": 77,
    "betreff": "Zahlung fehlgeschlagen",
    "schlagworte": ["zahlung", "dringend"],
    "kunde": {"name": "Tom", "ort": "Linz"},
}

# indent=2 macht das JSON für Menschen gut lesbar.
print(json.dumps(ticket, indent=2))

# Ihr Auftrag: Fügen Sie "offen": True zum Ticket hinzu und führen Sie den Block erneut aus.
# Beachten Sie: Pythons True heißt in JSON true.

YAML sagt dasselbe mit Einrückung

YAML enthält dieselben Objekte und Listen mit weniger Klammern. Ein Schlüssel und sein Wert stehen in einer Zeile: name: Tom.

Ein Listeneintrag beginnt mit - . Eine Verschachtelung zeigen Sie durch zwei Leerzeichen Einrückung.

YAML begegnet Ihnen in Einstellungsdateien für Server und Werkzeuge. Die Leerzeichen zählen, nehmen Sie also nie die Tabulatortaste.

Das Ticket in YAML

Code: bash
# Dasselbe Ticket in YAML
id: 77
betreff: Zahlung fehlgeschlagen
schlagworte:
  - zahlung
  - dringend
kunde:
  name: Tom
  ort: Linz

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.