Tool Kumarのツール
JSONをPHPのクラスに変換
コンストラクターでプロモートされた型付きreadonlyプロパティを持つ、PHP 8.1以降向けのクラスを生成します。各クラスには、元のJSONキーを対応付けてネストしたオブジェクトを組み立てるfromArrayメソッドがあります。
このツールの使い方
- フィールドが異なるレコードも含めて、代表的なレスポンスを貼り付けます。
- 生成された出力を確認し、必要に応じてルート名を変更します。
- コードをコピーまたはダウンロードし、型がAPI仕様と合っているか確認します。
実行例
この出力は組み込みの変換機能で生成したものです。2つのitemのpriceからは浮動小数点数のフィールドが、nullと文字列のnoteからはnull許容のフィールドが推論されます。
入力
{
"user-id": 42,
"profile": {
"city": "London",
"created_at": "2026-10-14T09:00:00Z"
},
"items": [
{
"price": 12,
"note": null
},
{
"price": 12.5,
"note": "gift"
}
]
}出力
<?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'],
);
}
}
配列と型付きモデルのどちらを使うか
PHPの連想配列が必要なだけなら、trueを指定したjson_decodeで十分です。生成したモデルを使う場合は、その配列をRoot::fromArrayに渡します。JSON_THROW_ON_ERRORを指定すると、不正な入力がエラーとして報告されます。
IDがPHP_INT_MAXを超える場合、JSON_BIGINT_AS_STRINGで桁を保持できますが、対応する生成済みのfloatプロパティをstringに変更する必要があります。推論されたfloatは、IDを正確に表す型ではありません。
$data = json_decode($responseBody, true, 512, JSON_THROW_ON_ERROR);
$model = Root::fromArray($data);オプションと注意点
- 出力はdeclare(strict_types=1)で始まり、finalクラスを生成します。ネストしたオブジェクトの配列には、PHPDocによる要素の型とarray_mapによる組み立てが使われます。
- null許容の値には?typeを使い、nullのみ、または型が混在するフィールドにはmixedを使います。日付はstringのままです。
- 整数はint、符号付き64ビットを超える整数はfloatになります。この場合、精度が失われることがあります。PHPのプラットフォームの上限を確認し、必要に応じて大きなIDは文字列としてデコードしてください。
- toArrayやJsonSerializableの実装はありません。クラスをエンコードするときに元のJSONキーが必要な場合は、明示的なシリアライズ処理を追加してください。
標準でプライバシーを保護
ドキュメントはこのブラウザー内に残ります。Tool Kumarは、解析、変換、ダウンロードファイルの作成を端末内で行います。アカウント登録やアップロードの手順はありません。
JSONをPHPのクラスに変換のよくある質問
- JSONをPHPの連想配列に変換できますか?
- はい。PHP自体の機能を使い、json_decode($json, true, 512, JSON_THROW_ON_ERROR)とします。このジェネレーターが出力するのは、PHPの配列リテラルではなく型付きのモデルクラスです。
- 生成されたコードにはどのバージョンのPHPが必要ですか?
- コンストラクターでプロモートされたreadonlyプロパティを使うため、PHP 8.1以降が必要です。出力では、型付きプロパティ、名前付き引数、strict_typesも使っています。
- ネストしたオブジェクトはどのようにクラスになりますか?
- fromArrayが、ネストしたクラスのfromArrayメソッドを呼び出します。ネストしたオブジェクトの配列にはarray_mapを使い、要素の型はPHPDocに記録されます。
- JSONにエンコードし直すときもキーは保持されますか?
- fromArrayメソッドは入力時の対応付けを保持します。出力には独自のエンコーダーがないため、これらのオブジェクトにjson_encodeを使うとプロパティ名が使われます。元のJSONキーが必要な場合は、JsonSerializableかtoArrayメソッドを追加してください。