PHP 配列から JSON への変換 — PHP 配列構文を JSON に変換
PHP 配列構文を JSON に変換します。短縮形式と長い配列構文、連想キー、末尾のカンマを処理。ブラウザ内で、アップロード不要。
PHP Array to JSON
Convert PHP array syntax to JSON. Handles nested arrays and associative arrays. Works entirely in your browser.
PHP 配列構文と JSON は、時には人々が交換可能として扱うほど似ており、また時には単純なコピーペーストを壊すほど違います。PHP はキーと値のペアに => を使い、JSON は : を使います。PHP はクォートされていない文字列キーを許可し、JSON はダブルクォートされた文字列を要求します。PHP は array() または [...] を使い、JSON はオブジェクトに {}、配列にのみ [...] を使います。違いは見ためだけのものですが、セマンティクスは同一であり、構文ギャップは十分に広いため、深くネストされた PHP 設定配列の手動変換は退屈で間違いやすい雑務です。
パーサーは、PHP から JSON への変換における 5 つの最も一般的な落とし穴を自動的に処理します。文字列キー:[name => 'Alice'] は {"name": "Alice"} になります。定数:flag がクォートされていない [flag => true] は、flag が認識された定数名にマッピングされるため {"flag": true} になります。末尾のカンマ:[1, 2, 3,] は最後のカンマをドロップします。短縮配列構文:[...] がデフォルトであり、キーに応じて JSON オブジェクトまたは配列を生成します。変換は単方向ですが、出力は常に有効な JSON です。
このツールの現実的な必要性は、Laravel からフロントエンドへのデータ受け渡しです。Laravel 開発者が PHP 構文で設定配列を書き、フロントエンド開発者が JavaScript または TypeScript コンポーネントのため同じデータを JSON オブジェクトとして必要とします。JSON を介したラウンドトリップは、@json() を持つ Blade テンプレートに PHP 配列を埋め込むよりもきれいです。JSON 出力は静的アーティファクトであり、フロントエンドリポジトリにコミットでき、独立してバージョン管理され、TypeScript コンパイラによって型チェックされます。
使い方
PHP 配列を貼り付ける
短縮構文 `[...]` またはレガシー `array(...)` のいずれかを使って PHP 配列リテラルを貼り付けます。パーサーは、実際の PHP コードに現れるように、連想キー、ネストされた配列、文字列クォート、整数値を処理します。
JSON 出力を確認する
出力はプリティプリント付きの標準 JSON です。null、ブール値、数値型が推論されます。PHP の `null` は JSON null に、PHP の `true`/`false` は JSON ブール値に、素の数値リテラルは JSON 数値になります。
JSON をコピーまたはダウンロードする
JSON をクリップボードにコピーするか、.json ファイルとしてダウンロードします。出力は RFC 8259 に従った有効な JSON であり、任意の標準 JSON パーサーで解析できます。
よくある質問
PHP 定数と式はどのように処理されますか?
PHP 定数(`PHP_EOL`、`true`、`false`、`null` など)は解決されます。`true` → `true`、`false` → `false`、`null` → `null`。認識されない定数と関数呼び出しは、そのリテラルソーステキストとして文字列でラップされます。算術式は評価されません。`1 + 2` は文字列 `'1 + 2'` のままです。
heredoc と nowdoc 文字列構文についてはどうですか?
heredoc と nowdoc 文字列はアンラップされ、内側のテキストは JSON 文字列として扱われます。heredoc の先頭インデントは PHP 7.3 のフレキシブル heredoc 規則に従って削除されます。空の heredoc は空の JSON 文字列になります。
複数の配列定義を持つ PHP ファイルを処理できますか?
パーサーは遭遇した最初のトップレベル配列リテラルを抽出します。PHP ファイルが複数の配列を含む場合(たとえば、いくつかの `return [...]` 文を持つ設定ファイル)、最初のもののみが変換されます。完全なカバレッジのためには、各配列を個別に貼り付けてください。
JSON 出力で PHP 整数キーはどのように処理されますか?
連続した整数キー(0、1、2、...)を持つ PHP 配列は JSON 配列になります。スパースまたは文字列キーを持つ PHP 配列は JSON オブジェクトになります。PHP 配列が数値と文字列キーを混合する場合、出力は数値キーを文字列プロパティ名として持つ JSON オブジェクトになります。
ソースの末尾のカンマを保持しますか?
PHP 配列の末尾のカンマは解析中に暗黙的に無視されます。PHP での構文の便宜であり、JSON では何の意味もありません。出力 JSON には末尾のカンマが含まれません。JSON 構文では許可されていないためです。
制限事項
- 式の評価なし関数呼び出し、変数参照、インライン計算は評価されません。`['date' => date('Y-m-d')]` は `{"date": "date('Y-m-d')"}` になります。文字列であり、評価された結果ではありません。
- クォートされていない文字列キーは予期せず解析される可能性がありますPHP は `[key => value]` のようなクォートされていない文字列キーを許可します。パーサーはこれらを文字列キーとして扱います。クォートされていないキーが認識された定数名と衝突する場合、定数の値が代わりに使用されます。`[true => 1]` は `{"1": 1}` になります。
- ソース内の 1 行ごと 1 エントリを前提としますパーサーは整形された PHP 配列で最もよく動作します。ミニファイまたは 1 行の PHP 配列は正しく解析されますが、不正な形式の入力ではあまり役立たないエラーメッセージを生成します。
プラットフォーム別の注意点
- macOS
- PHPStorm と VS Code はどちらも PHP 配列をよくフォーマットします。ブラウザツールは、チャットやメールからの PHP 配列スニペットを非 PHP ツールで使用するために JSON に変換するのに適しています。
- Linux
- コマンドラインで変換する場合、`php -r 'echo json_encode([...]);'` が同じことを行います。ブラウザツールは、PHP ランタイムが利用できない場合に適しています。
- Web
- 完全にクライアントサイドで動作します。読み込み後はオフラインでも動作します。