Wie ist JSON aufgebaut und wie werden Daten strukturiert?
Das Prinzip von Schlüssel und Wert
Du kennst bereits relationale Datenbanken, in denen Daten in strengen Tabellen liegen. JSON (JavaScript Object Notation) geht einen anderen Weg: Es ist ein textbasiertes, leichtgewichtiges Format, das Daten hierarchisch strukturiert. Es ist plattformunabhängig und sowohl für Menschen als auch für Maschinen hervorragend lesbar.
Die gesamte Struktur von JSON basiert auf Schlüssel-Wert-Paaren (Key-Value-Pairs). Ein Schlüssel (Key) ist immer eine Zeichenkette und muss zwingend in doppelten Anführungszeichen stehen. Er wird durch einen Doppelpunkt : vom zugehörigen Wert (Value) getrennt.
{
"bestellnummer": "2024-A123",
"istBezahlt": true,
"kunde": {
"name": "Alex Meyer",
"kundennummer": 8492
},
"artikel": [
"Tastatur",
"Maus"
]
}Objekte und Arrays: Die Strukturbausteine
Um Daten in JSON zu gruppieren, nutzt du zwei fundamentale Bausteine:
- Objekte (
{}): Sie werden in geschweifte Klammern eingeschlossen und enthalten eine ungeordnete Sammlung von Schlüssel-Wert-Paaren. Im obigen Beispiel ist der gesamte Datensatz ein Objekt. Auch der Wert hinter dem Schlüssel"kunde"ist ein eigenes, verschachteltes Objekt. Du nutzt Objekte, um die Eigenschaften einer einzelnen Entität zu beschreiben. - Arrays (
[]): Sie werden in eckige Klammern eingeschlossen und repräsentieren eine geordnete Liste von Werten. Im Beispiel ist"artikel"ein Array, das zwei Zeichenketten enthält. Du nutzt Arrays, um eine Sammlung von gleichartigen Elementen abzubilden.
Datentypen und strenge Syntax-Regeln
Während CSV alle Daten als reinen Text behandelt, unterstützt JSON sechs native Datentypen für die Werte:
- String (Zeichenkette): Text in doppelten Anführungszeichen (
"Tastatur"). - Number (Zahl): Ganz- oder Gleitkommazahlen ohne Anführungszeichen (
42oder19.99). - Boolean (Wahrheitswert):
trueoderfalse. - Array: Eine Liste (
[...]). - Object: Ein verschachteltes JSON-Objekt (
{...}). - null: Ein absichtlich leerer Wert (entspricht dem
NULLin SQL).
Achtung, Fehlerquelle: JSON verzeiht keine Syntaxfehler. Alle Schlüssel-Wert-Paare und Array-Elemente müssen strikt durch Kommas getrennt werden. Nach dem allerletzten Element in einem Objekt oder Array darf jedoch niemals ein Komma (Trailing Comma) stehen, sonst bricht das einlesende Programm (der Parser) mit einem Fehler ab. Kommentare sind in JSON standardmäßig nicht erlaubt.
Wann ist JSON das richtige Format für den Datenaustausch?
JSON vs. CSV: Hierarchie schlägt flache Tabellen
Aus deinem Vorwissen kennst du die Stärken und Schwächen von CSV-Dateien. Wenn du die abgebildeten Formate vergleichst, wird der Hauptunterschied deutlich: CSV erzwingt eine flache, zweidimensionale Struktur.
Stell dir eine Rechnung mit einer Kund:in und fünf bestellten Artikeln vor (eine 1:N-Beziehung). In CSV müsstest du die Kund:innendaten in fünf Zeilen redundant wiederholen oder komplexe Workarounds beim Parsen nutzen. JSON löst dieses Problem durch seine hierarchische Struktur. Du erstellst ein einziges Rechnungs-Objekt, das ein Array mit den fünf Artikeln enthält. Komplexe, verschachtelte Datenmodelle lassen sich so natürlich und ohne Redundanz abbilden. Zudem erkennt ein JSON-Parser automatisch, ob ein Wert eine Zahl (42) oder ein Text ("42") ist – ein klarer Vorteil gegenüber CSV.
Die Vorteile: Web-Standard und maschinelle Verarbeitung
JSON hat sich als der De-facto-Standard für Web-APIs (REST-Schnittstellen) etabliert. Wenn ein Frontend mit einem Backend kommuniziert, geschieht dies fast immer über JSON.
Die Vorteile liegen auf der Hand:
- Native Integration: Da JSON direkt von JavaScript abstammt, können Webanwendungen JSON-Daten ohne aufwändige Umwandlungsschritte direkt als Objekte im Arbeitsspeicher nutzen.
- Kompaktheit: Im Vergleich zu XML, das für jeden Wert öffnende und schließende Tags (
<name>Alex</name>) benötigt, ist JSON ("name": "Alex") deutlich kompakter. Das spart Bandbreite bei der Übertragung und beschleunigt die maschinelle Verarbeitung. - Plattformunabhängigkeit: Nahezu jede moderne Programmiersprache bietet hochoptimierte Standardbibliotheken, um JSON blitzschnell zu generieren oder zu parsen.
Die Nachteile: Speicherbedarf und fehlende Validierung
Trotz seiner Dominanz hat JSON auch spezifische Nachteile, die du bei der Architektur-Entscheidung berücksichtigen musst:
- Höherer Speicherbedarf als CSV: Bei massenhaften, rein tabellarischen Daten (z. B. Millionen von Sensormesswerten) ist CSV speichereffizienter. In JSON muss der Schlüssel (z. B.
"temperatur") für jeden einzelnen Messwert im Dokument wiederholt werden, was die Dateigröße aufbläht. - Fehlende native Schema-Validierung: In einer SQL-Datenbank verhindern Constraints fehlerhafte Dateneingaben. JSON selbst ist "schemalos". Es gibt von Haus aus keinen Mechanismus, der garantiert, dass ein JSON-Dokument die erwarteten Felder oder Datentypen enthält. Wenn eine API plötzlich
"alter": "zwanzig"statt"alter": 20sendet, muss deine Anwendung diesen Fehler selbst abfangen. (Hinweis: Tools wie JSON Schema können hier nachgerüstet werden, sind aber kein nativer Bestandteil des Formats wie etwa XSD bei XML).
Teste dein Wissen
Du schreibst eine JSON-Datei für eine REST-API, erhältst aber einen Syntaxfehler bei der Zeile `'kunde': "Alex"`. Welcher Fehler liegt hier vor?