JSON-Verarbeitung in PHP: Vollständiger Leitfaden
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das zum Standard für die Kommunikation zwischen Client und Server geworden ist. In PHP wird die Arbeit mit JSON nativ über die integrierten Funktionen json_encode() und json_decode() realisiert. In diesem Artikel werden wir alle Aspekte der JSON-Verarbeitung in PHP im Detail behandeln: von grundlegenden Operationen bis hin zu fortgeschrittenen Techniken und der Fehlerbehandlung.
Grundlegende Funktionen für die Arbeit mit JSON in PHP
PHP bietet zwei wichtige Werkzeuge für die JSON-Verarbeitung:
- json_encode() — wandelt einen PHP-Wert (Array, Objekt, Zeichenkette) in einen JSON-String um.
- json_decode() — dekodiert einen JSON-String zurück in einen PHP-Wert.
Beispiel für die grundlegende Verwendung von json_encode()
<?php// Ursprungsdaten: Assoziatives Array$data = [ 'name' => 'Ivan', 'age' => 30, 'skills' => ['PHP', 'JavaScript', 'Python']];
// In JSON kodieren$jsonString = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>Ergebnis der Ausführung:
{ "name": "Ivan", "age": 30, "skills": [ "PHP", "JavaScript", "Python" ]}Das Flag JSON_UNESCAPED_UNICODE bewahrt kyrillische Zeichen ohne Maskierung, und JSON_PRETTY_PRINT formatiert die Ausgabe mit Einzügen für bessere Lesbarkeit.
Beispiel für das Dekodieren von JSON in PHP
<?php$jsonString = '{"name":"Anna","age":25,"city":"Moskau"}';
// In ein assoziatives Array dekodieren (zweites Argument true)$array = json_decode($jsonString, true);echo $array['name']; // Annaecho $array['city']; // Moskau
// In ein Objekt dekodieren (Standard)$object = json_decode($jsonString);echo $object->name; // Anna?>Fehlerbehandlung bei der Arbeit mit JSON
Bei der Arbeit mit externen Daten ist es wichtig, die Korrektheit von JSON zu überprüfen. Verwenden Sie dazu json_last_error() und json_last_error_msg():
<?php$invalidJson = '{name: "Fehler"}'; // Ungültiges JSON (keine Anführungszeichen beim Schlüssel)
$decoded = json_decode($invalidJson);
if (json_last_error() !== JSON_ERROR_NONE) { $errorMsg = json_last_error_msg(); echo "JSON-Dekodierungsfehler: $errorMsg"; // Ausgabe: JSON-Dekodierungsfehler: Syntax error}?>Arbeit mit verschachtelten Strukturen
JSON eignet sich hervorragend für komplexe hierarchische Daten. Betrachten wir ein Beispiel mit verschachtelten Arrays und Objekten:
<?php$complexData = [ 'users' => [ [ 'id' => 1, 'name' => 'Peter', 'orders' => [ ['product' => 'Laptop', 'price' => 75000], ['product' => 'Maus', 'price' => 1500] ] ], [ 'id' => 2, 'name' => 'Maria', 'orders' => [] ] ], 'total_orders' => 2];
$json = json_encode($complexData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);file_put_contents('data.json', $json); // In Datei speichern
// Zurücklesen$jsonFromFile = file_get_contents('data.json');$restoredData = json_decode($jsonFromFile, true);
// Zugriff auf verschachtelte Datenecho $restoredData['users'][0]['orders'][0]['product']; // Laptop?>Fortgeschrittene Optionen von json_encode()
PHP unterstützt zahlreiche Flags zur Feinabstimmung der Kodierung:
JSON_FORCE_OBJECT— erzwingt die Kodierung eines Arrays als Objekt.JSON_NUMERIC_CHECK— wandelt numerische Zeichenketten in Zahlen um.JSON_UNESCAPED_SLASHES— maskiert keine Schrägstriche.JSON_THROW_ON_ERROR— wirft eine Exception bei einem Fehler.