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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| JSON | ein Textformat für Daten aus Objekten und Listen | |
| Objekt | eine Gruppe von Schlüsseln mit je einem Wert | {"menge": 2} |
| Schlüssel | der Name eines Werts in einem Objekt | "menge" |
| Liste | Werte in fester Reihenfolge, in eckigen Klammern | ["tee", "kuchen"] |
| Verschachtelung | ein Objekt oder eine Liste steht in einem anderen | |
| YAML | ein 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
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 Python | Ergebnis |
|---|---|
| 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
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
# Dasselbe Ticket in YAML
id: 77
betreff: Zahlung fehlgeschlagen
schlagworte:
- zahlung
- dringend
kunde:
name: Tom
ort: Linz