JSON-Verarbeitung in PHP: Vollständiger Leitfaden
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das zum De-facto-Standard für die Kommunikation zwischen Client und Server sowie zwischen verschiedenen Webdiensten geworden ist. In PHP ist die Arbeit mit JSON nativ implementiert und erfordert keine Installation zusätzlicher Erweiterungen, was es zu einer der bequemsten Sprachen für das Parsen und Generieren von JSON-Daten macht. In diesem Artikel werden wir alle Aspekte der JSON-Verarbeitung in PHP im Detail behandeln: von grundlegenden Funktionen bis hin zu fortgeschrittenen Techniken und Fehlerbehandlung.
Grundlegende PHP-Funktionen für die Arbeit mit JSON
PHP bietet zwei Schlüsselfunktionen für die Arbeit mit JSON:
json_encode($value, $options = 0, $depth = 512)— wandelt einen PHP-Wert (Array, Objekt, Zeichenkette, Zahl) in einen JSON-String um.json_decode($json, $associative = false, $depth = 512, $options = 0)— dekodiert einen JSON-String zurück in einen PHP-Wert. Wenn der Parameter$associativeauftruegesetzt ist, wird ein assoziatives Array zurückgegeben, andernfalls ein stdClass-Objekt.
Betrachten wir ein einfaches Beispiel:
<?php// Erstellen eines assoziativen Arrays$data = [ "name" => "Ivan", "age" => 30, "city" => "Moskau", "skills" => ["PHP", "JavaScript", "Python"]];
// Kodieren in JSON$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $json;// Ausgabe:// {// "name": "Ivan",// "age": 30,// "city": "Moskau",// "skills": ["PHP", "JavaScript", "Python"]// }
// Zurückdekodieren in ein Array$decoded = json_decode($json, true);echo $decoded['name']; // Ivan?>Wichtige Optionen von json_encode
Die Funktion json_encode unterstützt viele Flags, die das Kodierungsverhalten ändern. Die nützlichsten davon sind:
JSON_UNESCAPED_UNICODE— maskiert keine Unicode-Zeichen (kyrillische Schrift, Emojis). Ohne dieses Flag werden russische Buchstaben in \\uXXXX umgewandelt.JSON_PRETTY_PRINT— formatiert die Ausgabe mit Einrückungen und Zeilenumbrüchen für bessere Lesbarkeit.JSON_NUMERIC_CHECK— wandelt numerische Zeichenketten in Zahlen um.JSON_FORCE_OBJECT— erzwingt die Erstellung eines Objekts anstelle eines Arrays, selbst wenn das Array leer oder indiziert ist.JSON_PRESERVE_ZERO_FRACTION— behält den Bruchteil für ganze Zahlen bei (z. B. 10.0).
Beispiel für die Kombination von Optionen:
<?php$data = ['product' => 'Buch', 'price' => '1500.50', 'count' => 5];echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);// {"product":"Buch","price":1500.5,"count":5}?>Verarbeitung verschachtelter Strukturen und komplexer Objekte
PHP ermöglicht die Arbeit mit tief verschachtelten JSON-Strukturen. Betrachten wir ein Beispiel für das Parsen einer komplexen API-Antwort:
<?php// Stellen wir uns vor, dies ist eine Antwort von einer externen API$apiResponse = '{ "status": "success", "data": { "users": [ {"id": 1, "name": "Anna", "roles": ["admin", "editor"]}, {"id": 2, "name": "Peter", "roles": ["user"]} ], "pagination": { "page": 1, "totalPages": 3 } }}';
$parsed = json_decode($apiResponse, true);
// Alle Benutzernamen extrahieren$names = array_column($parsed['data']['users'], 'name');print_r($names); // Array ( [0] => Anna [1] => Peter )
// Prüfen, ob ein Benutzer die Rolle admin hatforeach ($parsed['data']['users'] as $user) { if (in_array('admin', $user['roles'])) { echo "{$user['name']} hat Administratorrechte"; }}?>Fehlerbehandlung bei JSON
Eines der häufigsten Probleme ist ungültiges JSON. PHP bietet Funktionen zur Fehlerdiagnose:
json_last_error()— gibt den letzten Fehler zurück
Auch in der Bibliothek
Eigen für C++: Vollständiger Leitfaden mit Beispielen
Arbeiten mit XML in JavaScript (Node.js): Parsen, Erstellen und Validieren
Maschinelles Lernen mit JavaScript: Bibliotheken für Node.js — Überblick und Beispiele
Kotlin Symbol Processing (KSP) für Kotlin: Komplettguide mit Beispielen