Einführung in JSON und PHP
JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das sich zum De-facto-Standard für die Kommunikation zwischen Webservern und Clients entwickelt hat. In der modernen Webentwicklung mit PHP werden Sie JSON überall begegnen: von API-Anfragen über Konfigurationsdateien bis hin zur Speicherung strukturierter Daten.
In diesem Artikel behandeln wir zwei grundlegende Prozesse der Arbeit mit JSON in PHP:
- Serialisierung — die Umwandlung eines PHP-Arrays oder -Objekts in einen JSON-String (Funktion
json_encode()). - Parsing (Deserialisierung) — die umgekehrte Umwandlung eines JSON-Strings in eine PHP-Variable (Funktion
json_decode()).
Das Material richtet sich an PHP-Anfänger, daher gehen wir vom Einfachen zum Komplexen, mit detaillierten Codebeispielen.
Datenserialisierung: Die Funktion json_encode()
Serialisierung ist der Prozess der Umwandlung von Daten aus der internen PHP-Darstellung (Arrays, Objekte) in einen JSON-String. Dies ist notwendig, wenn Sie Daten an einen Client (Browser, mobile App) senden oder in einer universellen Datei/Datenbank speichern möchten.
Umwandlung eines Arrays in JSON
Der einfachste Fall ist die Serialisierung eines assoziativen Arrays:
<?php$user = [ "name" => "Ivan Petrov", "age" => 28, "email" => "ivan@example.com", "is_active" => true];
$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>Ergebnis der Ausführung:
{ "name": "Ivan Petrov", "age": 28, "email": "ivan@example.com", "is_active": true}Beachten Sie die Flags:
JSON_UNESCAPED_UNICODE— ermöglicht die Beibehaltung von Kyrillisch (ohne dieses Flag werden russische Zeichen in \\uXXXX umgewandelt).JSON_PRETTY_PRINT— formatiert die Ausgabe mit Einrückungen für bessere Lesbarkeit (nützlich zum Debuggen, erhöht aber die String-Größe).
Umwandlung eines Objekts in JSON
PHP-Objekte können ebenfalls serialisiert werden. Dabei werden nur öffentliche (public) Eigenschaften einbezogen:
<?phpclass Product { public $id; public $title; private $secretPrice; // wird nicht in JSON aufgenommen
public function __construct($id, $title, $price) { $this->id = $id; $this->title = $title; $this->secretPrice = $price; }}
$product = new Product(1, "Laptop", 75000);echo json_encode($product, JSON_UNESCAPED_UNICODE);// Ausgabe: {"id":1,"title":"Laptop"}?>Arbeiten mit verschachtelten Strukturen
JSON unterstützt Verschachtelungen. PHP-Arrays beliebiger Tiefe werden korrekt umgewandelt:
<?php$data = [ "company" => "TechCorp", "employees" => [ ["name" => "Anna", "position" => "Entwickler"], ["name" => "Boris", "position" => "Designer"] ], "address" => [ "city" => "Moskau", "street" => "Twerskaja" ]];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>JSON-Parsing: Die Funktion json_decode()
Parsing (Deserialisierung) ist der umgekehrte Prozess: Aus einem JSON-String erhalten wir Daten, mit denen PHP arbeiten kann.
Abrufen eines Objekts
Standardmäßig gibt json_decode() ein Objekt der Klasse stdClass zurück:
<?php$jsonString = '{"name":"Ivan Petrov","age":28,"email":"ivan@example.com"}';$user = json_decode($jsonString);
echo $user->name; // Ivan Petrovecho $user->age; // 28echo $user->email; // ivan@example.com?>Abrufen eines Arrays
Wenn Sie das zweite Argument true übergeben, gibt die Funktion ein assoziatives Array zurück:
&l