Was ist JSON?
JSON steht für JavaScript Object Notation. Es ist ein leichtgewichtetes und für Menschen gut lesbares Datenformat, das hauptsächlich zum Datenaustausch zwischen einem Server und einer Webanwendung verwendet wird.
JSON Cheat Sheet 🧠
Grundlegende Syntaxregeln
- Schlüssel-Wert-Paare: Daten werden in Paaren aus einem Schlüssel (Name) und einem Wert geschrieben:
"schlüssel": "wert"
. - Schlüssel: Müssen immer Zeichenketten (Strings) sein und in doppelten Anführungszeichen (
"
) stehen. - Trennzeichen: Schlüssel-Wert-Paare werden durch ein Komma (
,
) getrennt. - Objekte: Werden in geschweifte Klammern (
{}
) eingeschlossen. Sie enthalten eine unsortierte Sammlung von Schlüssel-Wert-Paaren. - Arrays: Werden in eckige Klammern (
[]
) eingeschlossen. Sie enthalten eine geordnete Liste von Werten.
Datentypen
JSON unterstützt die folgenden Datentypen:
- String: Eine Zeichenkette in doppelten Anführungszeichen. Bsp:
"Hallo Welt"
- Number: Eine Ganzzahl oder eine Fließkommazahl. Bsp:
42
,3.14159
- Object: Eine Sammlung von Schlüssel-Wert-Paaren. Bsp:
{ "name": "Max", "alter": 30 }
- Array: Eine geordnete Liste von Werten. Bsp:
[ "Apfel", "Banane", "Kirsche" ]
- Boolean: Die Werte
true
oderfalse
(ohne Anführungszeichen). - null: Repräsentiert einen leeren oder nicht vorhandenen Wert (ohne Anführungszeichen).
Beispiel einer JSON-Struktur
JSON
{
"benutzername": "MaxMustermann",
"aktiv": true,
"registriert_seit": 2023,
"letzter_login": null,
"interessen": [
"Programmieren",
"Radfahren",
"Lesen"
],
"adresse": {
"strasse": "Musterstraße 1",
"plz": "12345",
"stadt": "Musterstadt"
}
}
JSON in der Praxis: Erstellen, Speichern & Einlesen
Hier wird gezeigt, wie man JSON-Daten in verschiedenen Sprachen verarbeitet.
JavaScript (Node.js & Browser)
JavaScript bietet native Methoden zur Verarbeitung von JSON.
- Erzeugen & Speichern (in Node.js)
JavaScript
const fs = require('fs'); // Dateisystem-Modul // 1. JavaScript-Objekt erstellen const user = { name: "Anna", id: 123, isVerified: true, roles: ["editor", "viewer"] }; // 2. Objekt in einen JSON-String umwandeln // Das dritte Argument (2) formatiert den String mit 2 Leerzeichen Einrückung (lesbarer) const jsonString = JSON.stringify(user, null, 2); // 3. String in eine Datei schreiben fs.writeFileSync('user.json', jsonString); console.log("Datei wurde erfolgreich gespeichert!");
- Einlesen & Umwandeln
JavaScript
const fs = require('fs'); // 1. JSON-Datei von der Festplatte lesen const fileContent = fs.readFileSync('user.json', 'utf8'); // 2. JSON-String in ein JavaScript-Objekt umwandeln (parsen) const userData = JSON.parse(fileContent); // 3. Auf die Daten zugreifen console.log(userData.name); // Gibt "Anna" aus console.log(userData.roles[0]); // Gibt "editor" aus
Java (mit der org.json
Bibliothek)
Eine gängige Bibliothek ist org.json
. Du musst sie zu deinem Projekt hinzufügen (z.B. via Maven).
- Erzeugen & Speichern
Java
import org.json.JSONObject; import java.nio.file.Files; import java.nio.file.Paths; import java.io.IOException; public class JsonWriter { public static void main(String[] args) { // 1. JSONObject erstellen und befüllen JSONObject game = new JSONObject(); game.put("title", "Catan"); game.put("releaseYear", 1995); game.put("isCooperative", false); // 2. In einen formatierten String umwandeln (Einrückung 4) String jsonString = game.toString(4); // 3. In eine Datei schreiben try { Files.write(Paths.get("game.json"), jsonString.getBytes()); System.out.println("Datei erfolgreich geschrieben."); } catch (IOException e) { e.printStackTrace(); } } }
- Einlesen & Umwandeln
Java
import org.json.JSONObject; import java.nio.file.Files; import java.nio.file.Paths; import java.io.IOException; public class JsonReader { public static void main(String[] args) { try { // 1. Datei als String einlesen String content = new String(Files.readAllBytes(Paths.get("game.json"))); // 2. String in ein JSONObject parsen JSONObject gameObject = new JSONObject(content); // 3. Auf die Daten zugreifen String title = gameObject.getString("title"); int year = gameObject.getInt("releaseYear"); System.out.println("Titel: " + title); // Gibt "Titel: Catan" aus System.out.println("Jahr: " + year); // Gibt "Jahr: 1995" aus } catch (IOException e) { e.printStackTrace(); } } }
PHP
PHP hat eingebaute Funktionen, die die Arbeit mit JSON sehr einfach machen.
- Erzeugen & Speichern
PHP
<?php // 1. PHP-Array (assoziativ) erstellen $data = [ "produkt" => "Laptop", "hersteller" => "Marke X", "verfügbar" => true, "preis" => 1299.99, "speicher_optionen" => [256, 512, 1024] ]; // 2. Array in einen JSON-String umwandeln // JSON_PRETTY_PRINT sorgt für eine lesbare Formatierung $jsonString = json_encode($data, JSON_PRETTY_PRINT); // 3. String in eine Datei schreiben file_put_contents('produkt.json', $jsonString); echo "Produkt-Datei wurde erstellt."; ?>
- Einlesen & Umwandeln
PHP
<?php // 1. Inhalt der JSON-Datei lesen $jsonContent = file_get_contents('produkt.json'); // 2. JSON-String in ein PHP-Objekt oder -Array umwandeln // Das zweite Argument `true` wandelt es in ein assoziatives Array um. $productData = json_decode($jsonContent, true); // 3. Auf die Daten zugreifen echo "Produkt: " . $productData['produkt']; // Gibt "Produkt: Laptop" aus echo "<br>"; echo "Erste Speicheroption: " . $productData['speicher_optionen'][0] . " GB"; // Gibt "Erste Speicheroption: 256 GB" aus ?>
Muster-JSON: Brettspiel-Datenbank 🎲
Diese JSON-Datei enthält ein Array von Brettspielen und nutzt alle JSON-Datentypen.
brettspiele.json
:
JSON
[
{
"id": 1,
"name": "Die Siedler von Catan",
"erscheinungsjahr": 1995,
"bewertung_bgg": 7.14,
"kooperativ": false,
"erweiterung_von": null,
"designer": [
"Klaus Teuber"
],
"spieleranzahl": {
"min": 3,
"max": 4
},
"kategorien": [
"Wirtschaft",
"Verhandlung",
"Aufbau"
]
},
{
"id": 2,
"name": "Pandemie",
"erscheinungsjahr": 2008,
"bewertung_bgg": 7.59,
"kooperativ": true,
"erweiterung_von": null,
"designer": [
"Matt Leacock"
],
"spieleranzahl": {
"min": 2,
"max": 4
},
"kategorien": [
"Medizin",
"Strategie",
"Kooperativ"
]
},
{
"id": 3,
"name": "Auf den Spuren von Marco Polo",
"erscheinungsjahr": 2015,
"bewertung_bgg": 7.8,
"kooperativ": false,
"erweiterung_von": null,
"designer": [
"Simone Luciani",
"Daniele Tascini"
],
"spieleranzahl": {
"min": 2,
"max": 4
},
"kategorien": [
"Wirtschaft",
"Reisen",
"Dice Rolling"
]
}
]