私は他のどの言語よりも多くのPHPを書いてきました、最初はWordPressプラグイン開発者として、後にLaravelでSaaSバックエンドを構築し、絶えず出てくる小さな雑用が1 つあり、手作業でやるのに飽きたJSONブロブ、コンフィグサンプル、APIレスポンス、フィクスチャがあり、ソースコードのPHP配列として必要です実行時にデコードされず、実際にリテラルとしてファイルに書き込まれますブラケットと矢印を手で入力するのは遅く、ツールが行うべき機械的な翻訳のまさに種類なので、1 つを組み込みました Toolz.dev、そしてこれがそのガイドです。
tl;dr: ザ ツールツ JSON から PHP 配列 コンバーター JSON ドキュメントを解析し、ファイルに直接貼り付けることができる PHP 配列リテラルとしてシリアル化します。 JSON オブジェクトは連想配列になります
=>、JSON配列はインデックス配列になり、スカラーはPHPの等価物にマッピングされます。 shortを選択します[]またはクラシックarray()構文、インデントを設定し、オプションで結果を a にラップします$variable = [...];割り当て。これは完全にクライアント側で実行されます。アップロードもサインアップも不要で、オフラインでも機能します。
JSONからPHPへの配列コンバーターとは何ですか?
JSON から PHP への配列コンバータは、JSON ドキュメントを同等の PHP 配列リテラルに変換します。 JSON オブジェクトは、 で書かれた連想配列になります => 演算子、JSON配列はインデックス付き配列になり、スカラー型は直接マップします: JSON文字列は単一引用符で囲まれたPHP文字列になります、 true あんど false 同じままで、 null 滞在 null、 と数値は値を保持します。 nesting は任意の深さまで保持されるため、深く構造化された JSON オブジェクトは、同じ形状の深く構造化された PHP 配列として表示されます。
これが便利な理由は、JSONとPHPの配列が同じこと、つまりキー付き値と順序付き値からなるツリーを句読点が異なる形で記述しているからです。 JSONはコロンと中括弧を使います; PHPは => と括弧.それらの間の翻訳は純粋な力学であり,力学は手で行うとエラーを起こしやすい.特に入れ子構造では,1 つの置き忘れられた括弧がファイルを壊す.コンバータは決定論的に翻訳を行い,有効なPHPを返してくれる.
これが何でないのかは 明確にしておく価値があります ではありません json_decode。 PHPは実行時にJSONを完璧に読み込み、データが文字列として到着すると、デコードは正しい動きです。このツールは、配列をソースコード自体に保存したい場合、もう1つのケースに対応します。
Json_decodeだけを使わないのはなぜですか?
これはすべての PHP 開発者が尋ねる最初の質問であり、正しい質問です。 json_decode($string, true) JSON 文字列を PHP 配列に解析し、PHP マニュアルには JSON を消費する標準的な方法として文書化されています。 JSON が実行時に到着するデータである場合、HTTP リクエスト、キュー、読み取ったファイルから json_decode これはまさに使用すべきものであり、その近くにはコード ジェネレーターは存在しません。
コンバータは別の状況のためのものです: JSONがランタイムデータではなく、コードにコミットしたいものである場合 私の自身の仕事からのいくつかの具体的なケース プラグインを同梱し、ソースで読み取りおよび編集可能であるべきデフォルトの構成配列 ルックアップテーブル、たとえば、名前への国コードのマップ、一度貼り付けてフェッチしないテストフィクスチャ テストが自己完結型でファイルの読み取りに依存しないようにリテラルである必要があるデータベース移行のためのシード JSONではなくコピーペースト可能なPHPでなければならないドキュメントの例。
これらすべてにおいて、すべてのリクエストで JSON 文字列をデコードするのは無駄であり、データを文字列リテラルの背後に隠すことになります。エディターは文字列を折りたたむことができず、リンターはデータをチェックできず、レビュー担当者はそれを PHP として読み取ることができません。ソースに配列を書き込むことで、次のことが解決されます。コンバーターは、JSON サンプルからそのリテラルを取得する最速の方法です。
これが 1 つの表の決定です。
| 状況 | 使い | なんでや |
|---|---|---|
| JSON はデータとしてランタイムに到着します | json_decode($json, true) |
解析はジョブ; ダイナミックに保ちます |
| JSON は config、fixtures、seeds、examples です | JSON から PHP 配列 コンバーター | 読みやすいリテラルをソースにコミットします |
| PHP 値から JSON を戻す必要があります | json_encode($array) |
逆方向 |
あなたはPHPを持っています serialize() ひも |
unserialize ツール | それはまったく別の形式です |
ショートの違いは何ですか [] あんど array() 構文?
彼らは同一の配列を生成します; ブラケットだけが異なります。 short syntax は を使います [ あんど ] そして、PHP 5.4 から利用可能であり、これは今や古代の歴史であるため、現代のコードベースの短い構文のいずれについてもデフォルトであり、私が到達する1 つの古典です array() form は、これまでにリリースされた PHP のすべてのバージョンで動作します。これが、まだ PHP を選択する唯一の理由です。PHP 5.4 より古いランタイム、またはスタイル ガイドで長い形式が義務付けられているコードベースをターゲットにしています。
このツールを使用すると、JSON を再ペーストせずにそれらを切り替えることができるため、古いプロジェクトに貢献している場合は、ワンクリックでその家のスタイルに一致させることができます。新しいものは何でも短い構文で、最新の PHP コーディング スタイルである PSR-12 がその周りに書かれています。
文字列や特殊文字はどのように扱われますか?
これは、独自のクイックコンバータを書く人を噛む部分なので、説明する価値があります ツールは、PHPシングルクォートリテラルとして文字列を放射します シングルクォートの内部では、PHPはほとんどすべての文字を文字通り扱います; 特別な2 つだけがバックスラッシュとシングルクォート自体です したがって、コンバータはまさにそれらの2 つをエスケープし、バックスラッシュは2 つのバックスラッシュになり、シングルクォートは先行するバックスラッシュを取得し、それは他のすべてを放っておきます。
それは心地よい結果をもたらします. JSON 文字列内の改行は, 単一引用符で囲まれた PHP 文字列内の実改行として伝わり, これは有効で, 文字を正確に保持します. もしツールが素朴に二重引用符のエスケープシーケンスを適用しようとしたら, するようなマングリングを得ることはありません. のような JSON 文字列 O'Brien なる 'O\'Brien'、 および Windows パス のような C:\Users なる 'C:\\Users'、どちらも正しいPHPです。 value内のアポストロフィが静かに構文を壊したコンフィグファイルをデバッグしたことがある場合は、これがあなたのために処理されることを理解するでしょう。
コンバーターの使い方は?
フローは4 ステップです。 JSONオブジェクトまたは配列を入力ボックスに貼り付けます; 最初に出力の形状を確認したい場合は、サンプルをロードします。 array構文をピックします。 、短い [] や array()。 indentation をプロジェクトに一致するように 2 スペース、4 スペース、またはタブに設定し、オプションで変数名を入力して出力を次のように折り返します $config = [...]; 後続のセミコロンで、ファイルにドロップする準備ができています。次に、「変換」をクリックして結果をコピーします。
JSON が無効な場合、ツールは parser' 自身のエラーメッセージをサイレントに失敗するのではなく報告するので、迷走した末尾のコンマや引用符で囲まれていないキーはすぐに見つけられ、そしてすべてがブラウザで実行されるため、実際のAPIレスポンスやプライベートコンフィグをマシンから離れることなく貼り付けることができ、値がランダムなサーバーに送信するようなものではない場合に重要です。 そのクライアント側のモデルは、サイトの残りの部分の背後にあるものと同じです。 、で説明されています データプライバシー オンラインツール ガイド.
これは他の JSON ツールとどのように適合しますか?
JSON から PHP への配列コンバータは、サイト上の JSON トランスフォーマの小さなファミリーのメンバーの 1 つであり、同じ解析コアを共有しています。最初に JSON を整理したい場合、 JSON フォーマッタ はインデントして検証します。 PHP の代わりに TypeScript インターフェイスと同じデータが必要な場合は、 JSON から TypeScript コンバータ 型を推測します。ターゲットがスプレッドシートまたはデータベース ロードの場合、 JSONからCSVへのコンバーター 平らに行にすると、 JSON から YAML へのコンバータ YAML を好むコンフィグ形式を扱います。
特に PHP 開発者にとって、知っておく価値のある隣人は次のとおりです unserialize ツール、PHP& #39; を独自に扱う serialize() フォーマット. json とは別の獣です, セッションデータやいくつかの WordPress オプション値で見つける PHP 固有のワイヤフォーマット, 2 つのツールは、構造化データが一般的に PHP プロジェクトに表示される 2 つの方法をカバーするスタックを横断して作業する場合, the Web 開発者ツールキット ラウンドアップは、これらのピースがどのように一緒にスロットされるかを示します 開発者の生産性向上ツール ガイドでは、より広いセットについて説明します。
WordPressとLaravelのワークフローから実際に動作した例
私が最もヒットした2 つの場所でこれを具体化させてください WordPressプラグインでは、アクティベーション時にオプションテーブルをシードするデフォルトの設定配列を出荷することがよくあります 開発中、その構造は頻繁にJSONサンプルとして生活を開始し、おそらく設定UIからエクスポートされるか、スキーマの設計中にスケッチされたものを手作業で翻訳するのではなく、コンバーターにJSONを貼り付け、プラグイン& #39; sスタイルに一致するように短い構文と4 スペースのインデントを選択します defaults 変数名として、そして戻ってきます $defaults = [ ... ]; それはaにまっすぐに落ちます get_default_settings() 機能。キーは読み取り可能なままであり、レビュー担当者は差分内の形状を確認でき、すべてのページ読み込みでランタイム デコードはありません。
Laravel側は似ていますが、configとシーダーに表示されます。 configファイルは大きな連想配列を返し、私は定期的にいくつかのサードパーティのマッピングのJSONバージョン、通貨テーブル、一連の機能フラグ、計画のリスト、その配列になる必要があるコンバーターがJSONをリテラルに変えます、私はそれを包みます return [ ... ]; config ファイルは期待しており、値はフレームワークがキャッシュするファーストクラスの PHP になりました config:cache 文字列から解析される代わりに. database seeders の場合,同じトリックが機能します: サンプル行の JSON を貼り付け,配列を取得して,フィードします. insert()。
私がコンバーターに頼る理由 json_decode(file_get_contents(...)) in these spots is not laziness, it is that committing the literal makes the data part of the code review, part of static analysis, and part of the version history in a form a human reads.これらのスポットでは、怠惰ではなく、リテラルをコミットすると、データがコードレビューの一部、静的分析の一部、およびバージョン履歴の一部が人間の読み取りコードの隣にあるJSONファイルは、PHPリンターには見えません; ソース内の配列は、データがアプリケーションに入力されるのではなく固定された部分である場合、その可視性は、1 回限りの変換の価値があります。
さらにガイドを書き始めるまで過小評価していたドキュメントの角度もあります READMEやナレッジベースでPHPの例を示したいとき、JSONのblobはコピーペースト可能なPHPではなく、それをつかんだリーダーが構文エラーにぶつかりましたコンバーターを最初に実行すると、docsの例が本物で、リーダーがファイルにドロップして作業を確認できる実行可能なPHPであることを意味し、これはドキュメントの品質を静かに高める小さなことです。
知っておく価値のある限界は何ですか?
いくつかの正直なエッジ。最大のものは数値精度であり、これは特にこのツールではなく、一般的な JSON 解析の特性です。コンバータは、数値を倍精度フロートとして表す browser's JSON パーサーを使用して JSON を解析します。およそ 2 の 53 乗を超える整数、16 桁の数字は、ツールがそれらを見る前に解析時に精度を失います。非常に大きな整数 ID で JSON を変換する場合は、それらを JSON 内の文字列として扱って正確さを保ちます。すべての JSON.parse ベースのコンバータは、この制限を共有します。そうでなければ嘘をついていると主張していたツールです。
第二に、PHP配列キー強制 PHPは、整数のように見える文字列キーを静かに実際の整数キーに変換します コンバータはオブジェクトキーを引用符で囲まれた文字列として書き込み、明示的で正しいですが、PHP自体が扱う可能性があることに注意してください '0' あんど 0 実行時の同じキーとして。これは、キーが数値文字列であるオブジェクトにのみ関係しますが、これはまれであり、動作は PHP's であり、ツール's ではありません。
3 つ目は、空のコンテナです。 空の JSON オブジェクト {} そして空のJSON配列 [] 両方 なる [] PHP では、PHP 配列では 2 つを区別できないため、これはマッピング内の真の曖昧さであり、ショートカットではなく、違いを保存する PHP 構造はありません。
最後に、出力は値であり、ステートメントではありません、変数名を指定しない限り。 1 つがなければ、既存の式に貼り付けるときに必要な裸のリテラルを取得します; 1 つでは、セミコロンで終わる完全な代入を取得します。変数名は検証されるため、無効な識別子は、壊れた PHP を生成するのではなく、明確なメッセージで拒否されます。
よくある質問
JSONからPHPへの配列コンバーターとは何ですか? JSON から PHP への配列コンバータは、JSON ドキュメントを同等の PHP 配列リテラルに変換します。 JSON オブジェクトは => の連想配列になります。演算子、JSON 配列はインデックス付き配列になり、スカラー型は対応する PHP にマッピングされるため、結果をスクリプトに直接貼り付けることができます。
JSONをPHP配列に変換するにはどうすればよいですか? JSONを入力ボックスに貼り付け、short [] またはarray()構文とインデントスタイルを選択してからConvertをクリックします。 toolはコピーできるPHP配列リテラルをビルドし、変数名を入力するとオプションで変数代入でラップされます。
短い [] と array()構文の違いは何ですか? 彼らは同一の配列を生成します; ブラケットのみが異なります。 short syntax は [] を使用し、PHP 5.4 から使用されていますが、array()は、すべての PHP バージョンで動作する古い形式です。 array()は、PHP 5.4 より古いランタイムをサポートする必要がある場合にのみ選択します。
これは PHP の json_decode を置き換えるものですか? いいえ。 json_decode($json、true)は、実行時に JSON 文字列を配列に解析します。これは、JSON がデータとして到着したときに正しいことです。このツールは、代わりに配列をソース コードに書き込みます。これは、すべてのリクエストでデコードされるのではなく、ファイル内に存在するはずの構成、フィクスチャ、シード データ、および例に適しています。
JSONオブジェクトと配列はどのようにマッピングされますか? JSON オブジェクトは、各キーが => とその値が続く単一引用符で囲まれた文字列である PHP 連想配列になります。 JSON 配列は、要素を順番に持つインデックス付き PHP 配列になります。ネストすると、ソースと同様に任意の深さに保存されます。
文字列や特殊文字はどのように扱われますか? 文字列は PHP の単一引用符のリテラルとして発行されるため、バックスラッシュと単一引用符のみが先行バックスラッシュでエスケープされます。実際の改行を含む他のすべての文字はそのまま保持され、これは PHP の単一引用符の文字列の扱いに一致します。
私の JSON はどこかにアップロードされていますか? いいえ 変換はデバイス上のJavaScriptを使用してブラウザで完全に行われます。 JSONがアップロード、ログ記録、または保存されることはなく、ページがロードされるとツールはネットワークが切断された状態で動作し続けます。
JSONからPHPへの配列コンバータは無料ですか? はい. signupも透かしも使用上限もなく完全に無料です.PHP配列に個人プロジェクトや商用プロジェクトに必要な数のJSONドキュメントを変換します.



