JSON
In dieser Lerneinheit lernst du die Grundlagen von JSON (JavaScript Object Notation) kennen, einem der wichtigsten Formate für den Datenaustausch zwischen Systemen. Du verstehst die JSON-Syntax und die verfügbaren Datentypen, sodass du eigene JSON-Strukturen erstellen und validieren kannst. Diese Kenntnisse wendest du direkt bei der Entwicklung von APIs und Webservices an, wo JSON der Standard für die Datenübertragung ist.
Einführung
Wenn du im Internet Daten austauschst – etwa beim Abrufen von Wetterdaten, dem Versenden einer Nachricht oder beim Zugriff auf eine API – läuft dieser Austausch fast immer über ein gemeinsames Format: JSON. Es sorgt dafür, dass Anwendungen unterschiedlichster Art dieselben Informationen verstehen und verarbeiten können.

Doch was genau steckt hinter diesem Format? Warum hat sich JSON gegenüber XML durchgesetzt, und wie wird sichergestellt, dass die übertragenen Daten wirklich korrekt aufgebaut sind?
In dieser Lerneinheit lernst du, wie JSON funktioniert, wie du es liest, schreibst und validierst – und warum es der Standard für den Datenaustausch im Web ist.
Lernziele
Nach dieser Lerneinheit kannst du:
- JSON-Daten korrekt lesen, erstellen und interpretieren, einschließlich der grundlegenden Strukturen (Objekte, Arrays) und Datentypen.
- Ein JSON-Schema anwenden, um JSON-Daten auf Aufbau, Datentypen und Pflichtfelder zu validieren.
- Die Unterschiede zwischen JSON und XML erklären und bewerten, in welchen Szenarien JSON das effizientere Format ist.
- Den Einsatz von JSON in RESTful Web-APIs beschreiben, einschließlich der typischen HTTP-Methoden und der Datenübertragung zwischen Client und Server.
Datentypen und Syntax von JSON
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Daten-Austauschformat. Es ist einfach für Menschen zu lesen und zu schreiben und für Maschinen einfach zu parsen (analysieren) und zu generieren. JSON baut auf zwei Strukturen auf:
- Eine Sammlung von Name/Wert-Paaren. In verschiedenen Sprachen wird dies als Objekt, Datensatz, Struktur, Wörterbuch, Hash-Tabelle, Schlüssel-Liste oder assoziatives Array realisiert.
- Eine geordnete Liste von Werten. In den meisten Sprachen wird dies als Array, Vektor, Liste oder Sequenz realisiert.
Grundlegende Datentypen
JSON unterstützt folgende Datentypen:
- String: Eine Folge von Null oder mehr Unicode-Zeichen. JSON-Strings werden in doppelten Anführungszeichen (
") eingeschlossen und unterstützen Backslash Escape-Sequenzen. - Number: Eine Zahl, die ganze Zahlen und Fließkommazahlen umfasst. JSON-Zahlen ähneln denen in den meisten Programmiersprachen, jedoch darf eine Number nicht die Hexadezimal-Form verwenden.
- Boolean: Entweder
trueoderfalse. - Array: Eine geordnete Liste von Null oder mehr Werten, jeweils durch Kommas getrennt und in eckige Klammern (
[]) eingeschlossen. - Object: Eine ungeordnete Sammlung von Schlüssel/Wert-Paaren, wobei der Schlüssel eine Zeichenfolge sein muss. Objekte werden durch geschweifte Klammern (
{}) dargestellt. - null: Ein leerer Wert, der verwendet wird, um das Fehlen eines Wertes darzustellen.
Syntax von JSON
Ein einfaches JSON-Beispiel sieht wie folgt aus:
{
"name": "John Doe",
"age": 30,
"isStudent": false,
"skills": ["Java", "HTML", "CSS"],
"address": {
"street": "123 Maple Street",
"city": "Anytown"
}
}Schlüsselregeln der JSON Syntax:
- Daten werden in Schlüssel/Wert-Paaren dargestellt.
- Geschweifte Klammern
{}halten die Objekte, und jeder Name (Schlüssel) wird von einem Doppelpunkt gefolgt. - Eckige Klammern
[]halten die Arrays, und Werte werden durch Kommas getrennt. - Schlüssel (names) müssen eine Zeichenkette (String) sein, umgeben von doppelten Anführungszeichen.
- Werte können ein String, eine Zahl, ein Objekt, ein Array, ein Boolean (
trueoderfalse) odernullsein.
Anwendungsbeispiele
Verwendung eines Arrays in JSON:
{
"employees": [
{"firstName": "John", "lastName": "Doe"},
{"firstName": "Anna", "lastName": "Smith"},
{"firstName": "Peter", "lastName": "Jones"}
]
}Verwendung eines verschachtelten Objekts in JSON:
{
"company": "Example Inc.",
"address": {
"street": "123 Example Street",
"city": "ExampleCity",
"postalCode": "12345"
}
}JSON ist ein extrem flexibles und weitverbreitetes Format für den Datenaustausch und bietet durch seine einfache Syntax und Datenstruktur eine hohe Lesbarkeit und einfache Handhabung in den meisten Programmiersprachen.
JSON-Schema zur Validierung von JSON-Daten
JSON-Schema ist ein Werkzeug zur Validierung der Struktur und des Inhalts von JSON-Daten. Es definiert das Format, die Art der Daten (Datentypen), deren Anordnung und weitere Regeln, die ein JSON-Dokument erfüllen muss. Dank JSON-Schema können Entwickler sicherstellen, dass JSON-Daten die erwarteten Strukturen und Werte vorweisen.
Ein JSON-Schema ist selbst ein JSON-Objekt, das bestimmte reservierte Eigenschaften nutzt. Hier sind einige der Schlüsselkonzepte:
type: Definiert den Datentyp des Elements. Gültige Werte sind unter anderemstring,number,object,array,booleanundnull.properties: Ein Objekt, das die erwarteten Eigenschaften eines Objekts und deren Schemata beschreibt, wenn der Typ des Schemasobjectist.items: Beschreibt das Schema für jedes Element in einem Array, wenn der Typ des Schemasarrayist.required: Ein Array von Strings, das die Namen der Eigenschaften auflistet, die in einem Objekt vorhanden sein müssen.additionalProperties: Bestimmt, ob ein Objekt zusätzliche Eigenschaften enthalten darf, die nicht explizit inpropertiesdefiniert sind.
Ein einfaches Beispiel
Stellen wir uns vor, wir hätten ein JSON-Dokument, das Benutzerdaten enthält:
{
"name": "John Doe",
"age": 30,
"isEmployed": true
}Das zugehörige JSON-Schema könnte folgendermaßen aussehen:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "number"
},
"isEmployed": {
"type": "boolean"
}
},
"required": ["name", "age", "isEmployed"]
}Dieses Schema definiert, dass das JSON-Dokument ein Objekt sein muss ("type": "object") und genau drei Eigenschaften enthalten soll: name (ein String), age (eine Zahl) und isEmployed (ein Boolean). Alle drei Eigenschaften sind erforderlich.
Validierungsprozess
Zur Validierung eines JSON-Dokuments gegen ein Schema gibt es zahlreiche Bibliotheken und Tools, die in verschiedenen Programmiersprachen verfügbar sind. Der Validierungsprozess umfasst typischerweise das Laden des Schemas und des Dokuments und dann die Verwendung eines Validator-Tools oder einer Bibliothek, um zu überprüfen, ob das Dokument dem Schema entspricht.
Fortgeschrittene Nutzung
JSON-Schema bietet viele weitere Möglichkeiten, unter anderem:
- Bedingungen: Mit
if,thenundelsekönnen Sie Bedingungen definieren, die bestimmen, welche Schemata gültig sind. - Zusammenführungen und Referenzen: Mit
allOf,anyOf,oneOfund$refkönnen Schemata kombiniert und wiederverwendet werden. - Formatierung: Die
format-Eigenschaft kann verwendet werden, um zusätzliche Validierungen für Strings vorzunehmen (z.B. E-Mail-Adressen, URIs und Datumsangaben).
Anwendungsbeispiel
Als praktisches Anwendungsbeispiel könnte ein Webdienst ein JSON-Schema nutzen, um eingehende Daten von einem API-Endpunkt zu validieren. Stellt die Validierung Fehler fest, kann der Dienst eine Fehlermeldung zurücksenden, die dem Client genau aufzeigt, wo das Problem liegt. Dies erhöht die Robustheit und Sicherheit von Softwareanwendungen erheblich.
Vorteile und Nachteile
Wenn wir über Datenformate für den Austausch von Informationen zwischen Anwendungen und über das Internet sprechen, stehen zwei Formate oft im Mittelpunkt der Diskussion: JSON (JavaScript Object Notation) und XML (eXtensible Markup Language). Beide Formate haben ihre eigenen Stärken und Schwächen, die sie für verschiedene Anwendungsfälle geeignet machen. XML hast du ja bereits in der letzten Lerneinheit kennengelernt.
| Vorteile von JSON | Nachteile von JSON |
|---|---|
| Kompaktheit: JSON ist im Vergleich zu XML in der Regel kompakter. Es nutzt weniger Zeichen für die Beschreibung der Datenstruktur (weniger “Overhead”), was zu einer besseren Netzwerk-Effizienz führt. | Weniger ausführliche Metadaten: JSON unterstützt nicht die gleiche Ebene der Metadaten (z.B. Attribute oder Kommentare innerhalb des Dokuments), wie sie in XML verfügbar sind. |
| Lesbarkeit: Trotz seiner Kompaktheit bleibt JSON für Menschen sehr gut lesbar, was die Entwicklung und Fehlersuche vereinfacht. | Mangel an Namespaces: Im Gegensatz zu XML, das durch den Einsatz von Namespaces Konflikte bei gleichnamigen Elementen aus verschiedenen Quellen vermeiden kann, besitzt JSON dieses Konzept nicht. |
| Einfachheit: JSON hat eine einfachere Syntax, die das Parsen (Analysieren) und Generieren von Daten unkompliziert macht. | |
| Effizienz: Aufgrund seiner Struktur (die direkt nativen JavaScript-Objekten entspricht) können JSON-Daten extrem leicht und schnell von JavaScript verarbeitet werden, was es zur idealen Wahl für Webanwendungen macht. |
Vergleich von JSON mit XML
Die Wahl zwischen JSON und XML hängt vom Anwendungsfall ab. JSON hat sich als das bevorzugte Format für Webanwendungen und APIs etabliert, insbesondere aufgrund seiner Effizienz und Einfachheit. XML bleibt eine mächtige Wahl für Anwendungen, die eine reichhaltige, komplexe Struktur und Erweiterbarkeit erfordern, wie z.B. in vielschichtigen Enterprise-Anwendungen oder bei der Definition von Konfigurationsdateien oder Dokumentenformaten.
Anwendungsbeispiel
Hier ist ein einfaches Beispiel, das den Unterschied in der Darstellung zwischen JSON und XML für denselben Datensatz zeigt:
JSON
{
"Person": {
"Name": "Max Mustermann",
"Alter": 30,
"Wohnort": "Musterstadt"
}
}XML
<Person>
<Name>Max Mustermann</Name>
<Alter>30</Alter>
<Wohnort>Musterstadt</Wohnort>
</Person>Dieses Beispiel verdeutlicht, wie JSON im Vergleich zu XML weniger Markup benötigt und dadurch kompakter ist.
Verwendung von JSON in Web-APIs (REST, …)
JSON ist ein zentraler Baustein moderner Web-APIs, speziell von RESTful (Representational State Transfer) Services.
Grundkonzepte von JSON in Web-APIs
RESTful Web-Services nutzen Standard-HTTP-Requests, um CRUD-Operationen (Create, Read, Update, Delete) auf Ressourcen auszuführen. JSON wird dabei als Datenformat verwendet, um diese Daten zwischen dem Client (z.B. einer Web-App oder mobilen App) und dem Server im “Body” (Hauptinhalt) dieser HTTP-Requests und -Responses zu übertragen.
Vorteile von JSON in Web-APIs
- Leichtgewicht: Wie im Vergleich zu XML gesehen, benötigt JSON weniger Overhead, was eine schnellere Datenübertragung über das Netzwerk ermöglicht.
- Einfachheit: JSON ist leicht verständlich und bedarf keiner komplexen Parser-Bibliotheken.
- Schnelle Verarbeitung: Moderne Web-Browser und Server-Technologien implementieren hochoptimierte Parsing-Algorithmen für JSON.
- Interoperabilität: JSON ist sprachenunabhängig. Ein Python-Backend kann problemlos JSON mit einem Java-Client oder einer JavaScript-Frontend-Anwendung austauschen.
Beispieldarstellung einer RESTful-Anfrage mit JSON
Ein typischer RESTful API-Call, um eine neue Ressource (z.B. einen Benutzer) zu erstellen, sieht so aus:
POST /api/ressourcen HTTP/1.1
Host: beispielapi.com
Content-Type: application/json
{
"name": "Beispielname",
"beschreibung": "Eine kurze Beschreibung",
"status": "aktiv"
}Die Antwort des Servers, die den Erfolg und die erstellte Ressource bestätigt, könnte folgendermaßen aussehen:
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 123,
"name": "Beispielname",
"beschreibung": "Eine kurze Beschreibung",
"status": "aktiv",
"erstelltAm": "2023-04-01T12:34:56Z"
}JSON und HTTP-Methoden in REST-APIs
GET: Abrufen von Ressourcen-Daten. JSON wird üblicherweise im Response-Body zurückgegeben.POST: Erstellen einer neuen Ressource. Die zu erstellenden Daten (Payload) werden als JSON im Request-Body gesendet; die Antwort enthält oft das erstellte Objekt als JSON.PUT/PATCH: Aktualisierung einer bestehenden Ressource. Die Aktualisierungsdaten werden als JSON im Request-Body gesendet.DELETE: Löschen einer Ressource. Hier wird seltener ein JSON-Body verwendet, aber die Antwort über den Status kann als JSON zurückgegeben werden.
Arbeiten mit JSON in JavaScript
Für Web-Anwendungen bietet JavaScript native Methoden, um direkt mit JSON zu arbeiten:
JSON.parse(text): Wandelt einen JSON-String (z.B. von einer API empfangen) in ein natives JavaScript-Objekt um, mit dem man arbeiten kann.JSON.stringify(objekt): Wandelt ein JavaScript-Objekt in einen JSON-String um (z.B. um es an eine API zu senden).
Fazit
JSON ist aufgrund seiner Einfachheit, Effizienz und breiten Unterstützung zum De-facto-Standard für den Datenaustausch in Web-APIs geworden. Die Verwendung von JSON zusammen mit RESTful-Prinzipien ermöglicht die Entwicklung skalierbarer, flexibler und wartbarer Web-Services.
Zusammenfassung
Zusammenfassung:
JSON – Struktur und Datentypen
JSON ist ein leichtgewichtiges Format zum Datenaustausch, das auf zwei Strukturen basiert: Objekten (Schlüssel-Wert-Paare) und Arrays (geordneten Listen). Es ist einfach lesbar, sprachenunabhängig und maschinenfreundlich.
- Unterstützte Datentypen: String, Number, Boolean, Array, Object, null.
- Objekte werden in
{}eingeschlossen, Arrays in[]. - Schlüssel sind immer Strings in Anführungszeichen.
- JSON wird häufig in Webanwendungen für Konfigurationen und API-Kommunikation genutzt. Ein Beispielobjekt zeigt, wie verschachtelte Strukturen und Arrays verwendet werden können, um komplexe Daten übersichtlich darzustellen.
JSON-Schema – Strukturvalidierung
Ein JSON-Schema dient der Validierung von JSON-Daten. Es definiert erwartete Datentypen, Pflichtfelder und erlaubt die Kontrolle von Datenstrukturen.
-
Wichtige Schlüssel:
type(Datentyp)properties(beschreibt die Struktur von Objekten)items(Schema für Array-Elemente)required(Pflichtfelder)additionalProperties(steuert, ob weitere Eigenschaften erlaubt sind)
-
Ein JSON-Schema ist selbst ein JSON-Objekt.
-
Es gibt Bedingungen (
if,then,else), Kombinationen (allOf,anyOf,oneOf) und Wiederverwendungen ($ref). -
JSON-Schema wird häufig in APIs zur Datenprüfung verwendet, um fehlerhafte Eingaben früh zu erkennen.
JSON vs. XML – Vergleich
JSON und XML sind beides Austauschformate, unterscheiden sich jedoch stark:
| Vorteile von JSON | Nachteile von JSON |
|---|---|
| Kompakter, effizienter, leicht lesbar | Weniger Metadaten und keine Namespaces |
| Einfach zu parsen und in JavaScript nativ unterstützt | Geringere Strukturflexibilität |
JSON ist heute Standard für Web-APIs, während XML oft in komplexen Enterprise-Systemen genutzt wird. JSON ist einfacher, klarer und besser für moderne Webdienste geeignet.
JSON in RESTful Web-APIs
RESTful APIs nutzen JSON zur Kommunikation zwischen Client und Server. CRUD-Operationen (Create, Read, Update, Delete) werden über HTTP-Methoden (GET, POST, PUT, DELETE) realisiert.
JSON.parse()wandelt einen JSON-String in ein JavaScript-Objekt um.JSON.stringify()konvertiert ein JavaScript-Objekt in einen JSON-String. Beispiel: Beim Erstellen einer Ressource sendet der Client JSON im Request-Body, der Server antwortet mit JSON-Daten zur Bestätigung. JSON ermöglicht dabei eine effiziente, plattformunabhängige und klare Datenübertragung.
Fazit
JSON ist durch seine Einfachheit, Effizienz und breite Unterstützung zum Standardformat moderner Webentwicklung geworden. Mit JSON-Schema lassen sich Daten präzise prüfen und validieren. Im Vergleich zu XML ist JSON schlanker und praxisnäher für APIs und Web-Services. Wer RESTful APIs entwickelt oder Daten zwischen Anwendungen austauscht, nutzt JSON als bevorzugtes Format für schnelle, strukturierte Kommunikation.