PHP から JSON へのコンバーター
PHP のクラス、配列、オブジェクトを貼り付けると、きれいな JSON が返ってきます。
このツールで何ができるか
型付きプロパティが詰まった PHP クラスがあって、テストや API 呼び出し、フィクスチャのために JSON ペイロードが必要な場合、配列を手書きするのは面倒です。PHP をここに貼り付ければ、すべてのプロパティを保持した妥当な JSON が返ってきます。単一クラスでも、Doctrine エンティティ のファイルでも、Laravel Eloquent モデルでも、ただの連想配列でも動作します — 結果は同じ、妥当な JSON が出力されます。
このコンバーターは実行時の json_encode() と同じ振る舞いをします。型付きプロパティ(PHP 7.4+)や readonly プロパティ(PHP 8.1+)は、通常の JSON キーとして出力されます。整数、浮動小数点、真偽値、文字列は 1 対 1 にマッピングされます。null は JSON の null になります。ネストされたオブジェクトインスタンスはネストされた JSON オブジェクトに展開されます。連想配列は JSON オブジェクトに、数値インデックスの配列は JSON 配列になります — json_encode と同じ分岐ルールです。
モダンな PHP 機能にも対応しています。バック付き enum は、その裏の値(文字列または整数)にシリアライズされます。DateTimeImmutable は ISO-8601 文字列として出力されます。Packagist から持ってきたような複数のクラスを一度に貼り付けると、トップレベルの各クラスが JSON 内の独自キーになり、ネストされた型も展開されます。メソッド、定数、静的プロパティはスキップされ、インスタンスデータのみが出力に含まれます。
使い方
3 ステップです。10 行貼り付けても、Model ファイル全体を貼り付けても、同じように動きます。
PHP を貼り付ける(またはサンプルを試す)
左側のエディタに PHP をそのまま貼り付けてください。クラス定義、new でのインスタンス化、連想配列、複数クラス — どれでも大丈夫です。現実的な例を先に見たい場合は サンプルを読み込む をクリックしてください。
PHP 構文 は完全な形で残してください — 名前空間、use 文、可視性修飾子、属性。パーサーは不要なボイラープレートは無視します。
「変換」をクリック
緑色の 変換 ボタンをクリックしてください。ツールが PHP を読み込み、すべてのプロパティとクラスを保持して、1 回のパスで JSON を構築します。実行中は短いローディングインジケーターが表示されます。
JSON をコピー
右側のパネルにインデント付きの JSON が表示されます。HTTP リクエストボディ、PHPUnit のフィクスチャ、設定ファイル、API ドキュメントにそのまま貼り付けて使えます。
こんな場面で役立ちます
API リクエストペイロードの作成
CreateOrderRequest の DTO があって、Postman や curl、統合テスト用の JSON ボディが必要な場合。クラスを貼り付ければ、ペイロードが手に入ります。
Laravel・Symfony のシード作成
ファクトリの <code>new Product(...)</code> の束を、database:seed やフィクスチャローダー用の JSON シードファイルに変換 — もう手作業で配列を書く必要はありません。
OpenAPI のサンプルを実態に合わせる
実際の DTO から直接 OpenAPI 仕様用の JSON サンプルを生成すれば、スキーマのサンプルがコードと同期し続けます。
json_encode の出力をデバッグ
オブジェクトが想定どおりにシリアライズされないとき、ここに貼り付けてきれいな形を確認し、実際の <code>json_encode()</code> の出力と比較できます。
よくある質問
PHP 8 の型付きプロパティや readonly プロパティに対応していますか?
はい。型付きプロパティ、null 許容型(?string)、readonly 修飾子、コンストラクタのプロモートプロパティ、すべて拾います。型ヒントは JSON の値を変えません — パーサーに何を期待するかを伝えているだけです。
enum はどうなりますか?
バック付き enum はその裏の値(string または int)にシリアライズされます。バック型を持たない純粋な enum は case 名として出力されます。これは BackedEnum に対する標準の json_encode の動作と同じです。
連想配列とインデックス配列 — どちらがオブジェクトになりますか?
json_encode と同じルールです。0 始まりの連続インデックス配列は JSON 配列に、文字列キー(または非連続の整数キー)を持つ配列は JSON オブジェクトになります。
DateTime と DateTimeImmutable はどのようにシリアライズされますか?
ISO-8601 文字列として、$dt->format(DateTime::ATOM) と同じ形式で出力されます。日付にタイムゾーンが含まれていれば、オフセットも出力に保持されます。
models ファイルをまるごと貼り付けられますか?
はい。トップレベルの各クラスが独自の JSON エントリになり、ネストされたオブジェクトは自然に展開され、コンストラクタで設定されたプロパティも含まれます。private や protected のプロパティも出力されます — パーサーは可視性ではなく形を見ているからです。
コードは保存されますか?
PHP は変換のためにバックエンドに送信されますが保持されません — ペイロードのログも取りません。機密性の高いコードの場合は、貼り付ける前に一度確認してください。
他にも役立つツール
PHP から JSON はその一部にすぎません。以下のツールとの相性が良いです: