PHP zu JSON Konverter
PHP-Klassen, Arrays oder Objekte einfügen. Sauberes JSON zurückbekommen.
Was dieses Tool macht
Wenn du eine PHP-Klasse voller typisierter Properties hast und für einen Test, einen API-Call oder eine Fixture ein JSON-Payload brauchst, ist es nervig, das Array von Hand zu schreiben. Füge das PHP hier ein und du bekommst valides JSON mit jeder Property intakt zurück. Funktioniert mit einer einzelnen Klasse, einer Datei voller Doctrine-Entities, einem Laravel-Eloquent-Model oder einem simplen assoziativen Array — gleiches Ergebnis, valides JSON raus.
Der Konverter macht genau das, was json_encode() zur Laufzeit tut. Typisierte Properties (PHP 7.4+) und readonly-Properties (PHP 8.1+) kommen als normale JSON-Keys raus. Integers, Floats, Booleans und Strings mappen eins zu eins. null wird zu JSON null. Verschachtelte Objekt-Instanzen werden zu verschachtelten JSON-Objekten aufgeklappt. Assoziative Arrays werden zu JSON-Objekten; numerisch indizierte Arrays werden zu JSON-Arrays — dieselbe Trennung, die auch json_encode macht.
Moderne PHP-Features werden ebenfalls unterstützt. Backed Enums serialisieren zu ihrem Backing-Value (string oder int). DateTimeImmutable kommt als ISO-8601-String raus. Wenn du mehrere Klassen auf einmal einfügst — sowas zieht man sich zum Beispiel von Packagist — wird jede Top-Level-Klasse zu ihrem eigenen Key im JSON, mit aufgeklappten verschachtelten Typen. Methoden, Konstanten und statische Properties werden übersprungen; nur Instanzdaten landen im Output.
So benutzt du es
Drei Schritte. Funktioniert gleich, egal ob du zehn Zeilen oder eine ganze Model-Datei einfügst.
PHP einfügen (oder das Beispiel ausprobieren)
Wirf dein PHP so wie es ist in den linken Editor. Eine Class-Definition, ein new-Instanzaufruf, ein assoziatives Array oder mehrere Klassen — alles okay. Klick Beispiel laden, wenn du erst ein realistisches Beispiel sehen willst.
Behalte die vollständige PHP-Syntax — Namespaces, use-Statements, Sichtbarkeits-Modifier, Attributes. Der Parser ignoriert Boilerplate, das er nicht braucht.
Auf Konvertieren klicken
Klick auf den grünen Konvertieren-Button. Das Tool liest das PHP, erhält jede Property und Klasse und baut das JSON in einem Durchgang. Während es läuft, siehst du einen kurzen Lade-Indikator.
JSON kopieren
Das rechte Panel füllt sich mit eingerücktem JSON. Kopier es direkt in einen HTTP-Request-Body, eine PHPUnit-Fixture, ein Config-File oder deine API-Docs.
Wann das wirklich hilft
API-Request-Payloads bauen
Du hast ein CreateOrderRequest-DTO und brauchst den passenden JSON-Body für Postman, curl oder einen Integrationstest. Klasse einfügen, Payload bekommen.
Laravel oder Symfony seeden
Wandle einen Haufen <code>new Product(...)</code>-Factory-Zeilen in eine JSON-Seed-Datei für database:seed oder Fixture-Loader um — Schluss mit handgeschriebenen Arrays.
OpenAPI-Beispiele ehrlich halten
Generiere JSON-Beispiele für deine OpenAPI-Spec direkt aus deinen echten DTOs, damit die Schema-Beispiele synchron mit deinem Code bleiben.
json_encode-Output debuggen
Wenn ein Objekt nicht so serialisiert, wie du es erwartest, füg es hier ein, um die saubere Form zu sehen — und vergleich sie dann mit dem, was <code>json_encode()</code> tatsächlich produziert.
Häufige Fragen
Werden PHP 8 typisierte und readonly Properties unterstützt?
Ja. Typisierte Properties, nullable Types (?string), readonly-Modifier und im Constructor promotete Properties werden alle erkannt. Der Type-Hint ändert den JSON-Wert nicht — er sagt dem Parser nur, was er erwarten soll.
Was ist mit Enums?
Backed Enums serialisieren zu ihrem Backing-Value (string oder int). Pure Enums ohne Backing-Type werden mit dem Case-Namen ausgegeben. Das entspricht dem Standardverhalten von json_encode auf einem BackedEnum.
Assoziatives Array vs. indiziertes Array — was wird zum Objekt?
Gleiche Regel wie json_encode: Ein bei 0 startendes sequenzielles Array wird zum JSON-Array; jedes Array mit String-Keys (oder nicht-sequenziellen Integer-Keys) wird zum JSON-Objekt.
Wie werden DateTime und DateTimeImmutable serialisiert?
Als ISO-8601-Strings, im gleichen Format wie $dt->format(DateTime::ATOM). Wenn dein Datum eine Zeitzone hat, bleibt der Offset im Output erhalten.
Kann ich eine komplette Models-Datei einfügen?
Ja. Jede Top-Level-Klasse wird zu ihrem eigenen JSON-Eintrag, verschachtelte Objekte klappen sich natürlich auf, und im Constructor gesetzte Properties werden mit einbezogen. Private und protected Properties kommen auch raus — der Parser schaut auf die Form, nicht auf die Sichtbarkeit.
Wird mein Code gespeichert?
Dein PHP wird zur Konvertierung ans Backend geschickt und nicht persistiert — wir loggen den Payload nicht. Bei sensiblem Code wirf vor dem Einfügen kurz einen Blick drauf.
Weitere Tools, die du brauchen könntest
PHP zu JSON ist ein Puzzleteil. Diese hier passen gut dazu: