Tool von Tool Kumar

PHP-Klassen aus JSON generieren

Generiere Klassen für PHP 8.1 oder neuer mit typisierten readonly-Eigenschaften, die direkt im Konstruktor deklariert werden. Jede Klasse hat eine fromArray-Methode, die die ursprünglichen JSON-Schlüssel zuordnet und verschachtelte Objekte erstellt.

So verwendest du dieses Tool

  1. Füge eine repräsentative Antwort ein, auch mit Datensätzen, deren Felder sich unterscheiden.
  2. Prüfe die generierte Ausgabe und ändere bei Bedarf den Stammnamen.
  3. Kopiere den Code oder lade ihn herunter. Prüfe anschließend die Typen anhand deines API-Vertrags.

Praxisbeispiel

Diese Ausgabe stammt aus dem integrierten Konverter. Aus den beiden Artikelpreisen wird ein Gleitkommafeld abgeleitet. Die Werte null und ein String im Feld note ergeben ein Feld, das null sein kann.

Eingabe

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

Ausgabe

<?php

declare(strict_types=1);

final class Root
{
    public function __construct(
        public readonly int $userId,
        public readonly Profile $profile,
        /** @var Item[] */
        public readonly array $items,
    ) {
    }

    public static function fromArray(array $data): self
    {
        return new self(
            userId: $data['user-id'],
            profile: Profile::fromArray($data['profile']),
            items: array_map(static fn ($x) => Item::fromArray($x), $data['items']),
        );
    }
}

final class Profile
{
    public function __construct(
        public readonly string $city,
        public readonly string $createdAt,
    ) {
    }

    public static function fromArray(array $data): self
    {
        return new self(
            city: $data['city'],
            createdAt: $data['created_at'],
        );
    }
}

final class Item
{
    public function __construct(
        public readonly float $price,
        public readonly ?string $note,
    ) {
    }

    public static function fromArray(array $data): self
    {
        return new self(
            price: $data['price'],
            note: $data['note'],
        );
    }
}

Ein Array oder ein typisiertes Modell wählen

Für ein assoziatives PHP-Array genügt json_decode mit true. Übergib dieses Array an Root::fromArray, um die generierten Modelle zu verwenden. JSON_THROW_ON_ERROR meldet fehlerhafte Eingaben.

Wenn eine ID PHP_INT_MAX überschreitet, kann JSON_BIGINT_AS_STRING ihre Ziffern erhalten. Ändere dann aber die entsprechende generierte float-Eigenschaft in string. Ein abgeleiteter float ist kein exakter ID-Typ.

$data = json_decode($responseBody, true, 512, JSON_THROW_ON_ERROR);
$model = Root::fromArray($data);

Optionen und Sonderfälle

  • Die Ausgabe beginnt mit declare(strict_types=1) und erzeugt final-Klassen. Verschachtelte Objektarrays erhalten PHPDoc-Elementtypen und werden mit array_map aufgebaut.
  • Werte, die null sein können, verwenden ?type. Ein Feld mit ausschließlich null oder gemischten Typen verwendet mixed. Datumswerte bleiben string.
  • Ganzzahlen verwenden int, Ganzzahlen jenseits des vorzeichenbehafteten 64-Bit-Bereichs float. Dabei kann Genauigkeit verloren gehen. Prüfe die Grenzen deiner PHP-Plattform und dekodiere große IDs bei Bedarf als Strings.
  • Es gibt keine toArray- oder JsonSerializable-Implementierung. Ergänze eine explizite Serialisierung, wenn du beim Kodieren der Klassen die ursprünglichen JSON-Schlüssel benötigst.

Standardmäßig privat

Dein Dokument bleibt in diesem Browser. Tool Kumar parst und konvertiert Daten und erstellt Downloads auf deinem Gerät, ohne Konto und ohne Upload.

PHP-Klassen aus JSON generieren: häufige Fragen

Kann ich JSON in ein assoziatives PHP-Array umwandeln?
Ja, direkt mit PHP über json_decode($json, true, 512, JSON_THROW_ON_ERROR). Dieser Generator erzeugt typisierte Modellklassen statt eines PHP-Array-Literals.
Welche PHP-Version benötigt der generierte Code?
PHP 8.1 oder neuer für readonly-Eigenschaften, die im Konstruktor deklariert werden. Die Ausgabe verwendet außerdem typisierte Eigenschaften, benannte Argumente und strict_types.
Wie werden verschachtelte Objekte zu Klassen?
fromArray ruft die fromArray-Methode der verschachtelten Klasse auf. Arrays aus verschachtelten Objekten verwenden array_map. Die Elementtypen stehen im PHPDoc.
Bleiben die Schlüssel beim erneuten Kodieren als JSON erhalten?
Die fromArray-Methode erhält die Eingabezuordnungen. Die Ausgabe hat keinen eigenen Encoder. Daher verwendet json_encode für diese Objekte die Eigenschaftsnamen. Ergänze JsonSerializable oder eine toArray-Methode, wenn du die ursprünglichen JSON-Schlüssel benötigst.

Verwandte Tools

Pydantic-Modell aus JSON generieren, JSON in Java konvertieren und JSON Schema generieren.