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 Server und Client geworden ist. In PHP ist die Arbeit mit JSON nativ über die Erweiterung json implementiert, die seit PHP 5.2.0 verfügbar ist. In diesem Artikel werden wir die wichtigsten Funktionen, die Fehlerbehandlung, die Arbeit mit verschachtelten Strukturen und bewährte Praktiken im Detail behandeln.
Grundlegende Funktionen für die Arbeit mit JSON
PHP bietet zwei Schlüsselfunktionen:
json_encode()— wandelt einen PHP-Wert (Array, Objekt, Zeichenkette usw.) in einen JSON-String um.json_decode()— wandelt einen JSON-String zurück in eine PHP-Variable (Array oder Objekt) um.
Beispiel: Codieren eines Arrays in JSON
<?php$data = [ 'name' => 'Alice', 'age' => 30, 'is_student' => false, 'skills' => ['PHP', 'JavaScript', 'Python']];
$json = json_encode($data, JSON_PRETTY_PRINT);echo $json;?>Ergebnis der Ausführung:
{ "name": "Alice", "age": 30, "is_student": false, "skills": [ "PHP", "JavaScript", "Python" ]}Beispiel: Dekodieren von JSON in ein Array
<?php$jsonString = '{"name":"Bob","age":25,"is_active":true}';
// Der zweite Parameter true — gibt ein assoziatives Array zurück$array = json_decode($jsonString, true);print_r($array);?>Ergebnis:
Array( [name] => Bob [age] => 25 [is_active] => 1)Flags für die Feineinstellung
Die Funktionen json_encode() und json_decode() unterstützen einen zweiten Parameter — eine Bitmaske von Flags. Betrachten wir die nützlichsten:
- JSON_PRETTY_PRINT — formatiert die Ausgabe mit Einrückungen (für Lesbarkeit).
- JSON_UNESCAPED_UNICODE — maskiert keine Unicode-Zeichen (nützlich für Kyrillisch).
- JSON_FORCE_OBJECT — wandelt ein assoziatives Array zwangsweise in ein Objekt um.
- JSON_NUMERIC_CHECK — wandelt Zeichenketten, die Zahlen enthalten, in den numerischen Typ um.
Beispiel mit Kyrillisch und Formatierung
<?php$data = [ 'name' => 'Алексей', 'city' => 'Москва'];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);?>Ergebnis:
{ "name": "Алексей", "city": "Москва"}Fehlerbehandlung bei der Arbeit mit JSON
Wenn die eingegebene Zeichenkette kein gültiges JSON ist, gibt json_decode() null zurück. Um die genaue Fehlerursache zu erfahren, verwenden Sie die Funktionen json_last_error() und json_last_error_msg().
<?php$invalidJson = '{name: "Alice"}'; // Ungültiges JSON (Schlüssel ohne Anführungszeichen)
$result = json_decode($invalidJson);if (json_last_error() !== JSON_ERROR_NONE) { echo 'Fehler: ' . json_last_error_msg();} else { print_r($result);}?>Ausgabe:
Fehler: Syntax errorVollständige Liste der Fehlerkonstanten:
JSON_ERROR_NONE— keine Fehler.JSON_ERROR_DEPTH— maximale Stacktiefe überschritten.JSON_ERROR_STATE_MISMATCH— ungültiges JSON (Klammerinkonsistenz).JSON_ERROR_SYNTAX— Syntaxfehler.JSON_ERROR_UTF8— ungültige UTF-8-Kodierung.
Arbeit mit verschachtelten Strukturen
JSON enthält oft verschachtelte Objekte und Arrays. PHP ermöglicht die einfache Verarbeitung solcher Daten mit Hilfe von Rekursion oder Schleifen.
<?php$complexJson = '{ "users": [ {"name": "Alice Auch in der Bibliothek
Arbeiten mit Bildern in C# (.NET): Bibliotheken, Werkzeuge und Beispiele
Arbeiten mit Kafka in TypeScript: Die Bibliothek KafkaJS und Beispiele
Rust-Anwendungsüberwachung: Die Bibliothek `tracing`
Prophecy für PHP: Komplette Anleitung mit Beispielen