Einleitung: Warum sieht JSON in PHP aus wie Kraut und Rüben?
\n\nStellen Sie sich folgende Situation vor: Sie haben ein PHP-Skript geschrieben, das Daten von einer API abruft oder eine Antwort für das Frontend erstellt. Sie geben das Ergebnis mit echo json_encode($data) aus – und erhalten im Browser oder in der Konsole so etwas wie:
{"users":[{"id":1,"name":"Ivan","email":"ivan@example.com"},{"id":2,"name":"Maria","email":"maria@example.com"}]}\n\nGeben Sie zu, diese Zeile ohne Formatierung zu lesen ist, als würde man versuchen, die Handschrift eines Arztes zu entziffern. Besonders wenn es viele Daten gibt und die Verschachtelung tief ist. Genau hier kommt Pretty-Printing von JSON in PHP zur Hilfe.
\n\nDieser Artikel richtet sich an alle, die gerade erst mit PHP und JSON beginnen. Wir werden besprechen, wie man die JSON-Ausgabe schön, lesbar und debug-freundlich gestaltet. Sie lernen nicht nur die grundlegenden Methoden, sondern auch nützliche Lifehacks, die Ihnen Stunden an Nerven sparen. Los geht's!
\n\nWas ist Pretty-Print und wozu braucht man es?
\n\nPretty-Print (wörtlich „schöner Druck") ist die Formatierung von Daten mit Einrückungen, Zeilenumbrüchen und Ausrichtung. Im Fall von JSON bedeutet das, dass Sie statt einer langen Zeile eine strukturierte Ausgabe erhalten, bei der jeder Schlüssel und Wert an seinem Platz ist.
\n\nStellen Sie sich vor, Sie debuggen einen API-Aufruf oder überprüfen eine Konfigurationsdatei. Ohne Pretty-Print verschwenden Sie viel Zeit damit, zu verstehen, wo ein Objekt endet und ein anderes beginnt. Mit Formatierung haben Sie alles auf einen Blick.
\n\nIn PHP gibt es mehrere Möglichkeiten, eine schöne JSON-Ausgabe zu erreichen. Wir beginnen mit der einfachsten und beliebtesten – der Verwendung des Flags JSON_PRETTY_PRINT.
Methode 1: JSON_PRETTY_PRINT – Ihr bester Freund
\n\nDer einfachste Weg, Pretty-Print JSON in PHP zu machen, ist die Verwendung der Konstante JSON_PRETTY_PRINT beim Aufruf der Funktion json_encode(). Diese Konstante ist seit PHP 5.4.0 verfügbar.
Basisbeispiel
\n\n<?php\n$data = [\n 'users' => [\n ['id' => 1, 'name' => 'Ivan', 'email' => 'ivan@example.com'],\n ['id' => 2, 'name' => 'Maria', 'email' => 'maria@example.com']\n ]\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT);\necho $json;\n?>\n\nErgebnis:
\n\n{\n "users": [\n {\n "id": 1,\n "name": "Ivan",\n "email": "ivan@example.com"\n },\n {\n "id": 2,\n "name": "Maria",\n "email": "maria@example.com"\n }\n ]\n}\n\nSchon viel besser, oder? Jedes Array-Element ist jetzt in einer eigenen Zeile, Einrückungen sind gesetzt, die Struktur ist intuitiv lesbar.
\n\nKombinieren mit anderen Flags
\n\nJSON_PRETTY_PRINT kann und sollte mit anderen Flags für eine feinere Abstimmung kombiniert werden. Zum Beispiel:
- \n
- JSON_UNESCAPED_UNICODE – escapet kyrillische und andere Unicode-Zeichen nicht (statt
\\u0438\\u0432\\u0430\\u043dsehen SieIvan). \n - JSON_UNESCAPED_SLASHES – escapet Schrägstriche nicht (nützlich für URLs). \n
- JSON_NUMERIC_CHECK – wandelt Zeichenketten, die Zahlen enthalten, in den numerischen Typ um. \n
<?php\n$data = [\n 'message' => 'Hallo, Welt!',\n 'url' => 'https://example.com/api/v1/users'\n];\n\n$json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);\necho $json;\n?>\n\nErgebnis:
\n\n{\n "message": "Hallo, Welt!",\n "url": "https://example.com/api/v1/users"\n}\n\nBeachten Sie: Kyrillisch wird normal angezeigt, Schrägstriche sind nicht escapet. Genau so sollte man JSON normalerweise für Menschen ausgeben.
\n\nMethode 2: Formatierung einer bereits vorhandenen JSON-Zeichenkette
\n\nWas aber, wenn Sie bereits eine JSON-Zeichenkette haben (z. B. aus einer Datei oder einer Datenbank) und s