【PHP】 JSON を PHP の連想配列定義の文字列に変換する web サービスの紹介

  • 2021年1月13日
  • PHP

 紹介するのは題の通り JSON を PHP の連想配列定義の文字列に変換する web サービスです。
 これを行ってくれる web サービスは wtools.io の Convert JSON to PHP Array Online です。
Convert JSON to PHP Array Online | WTOOLS
 具体的に何をやるかというと、

{
    "memberId": 1234,
    "name": "ほげほげ",
    "group": {
        "groupId": 98,
        "name": "ふがグループ"
    }
}

 この様な JSON を元に

[
  'memberId' => 1234,
  'name' => 'ほげほげ',
  'group' => [
    'groupId' => 98,
    'name' => 'ふがグループ',
  ],
]

 こういうそのまま PHP の中で使えるコードに変換します。これが便利なのはフレームワークのモデルの jsonSerialize メソッドなどを使って暗黙の形式でレスポンスを返していたコードを、べた書きの明示的にレスポンスの形式を定めるにコードする時です。API の形式をこうであると確実に決めなければいけないが、どうせ暗黙の形式で返した時と変わらない、といった場合、この web サービスで暗黙形式のレスポンスの JSON を PHP の配列定義にしてレスポンス形式定義コードの元にすることでコーディングが速くできます。
 単にコピペして value を書き換えるだけでも割と早いのですが、正規表現による置換を使うと更に早くできます。変換直後では value がマジックナンバーになっていますが、実際にはプロパティが value となるべきなので次の正規表現による置換を適用します。

// 変換対象指定用正規表現。キーを取得して値を削除する準備
'(.*)' => .*,
// 置換用正規表現。キーをそのままにして特定の変数のプロパティにキーの値を入れる
'$1' => \$モデル等のオブジェクト変数名->$1,

 ↑ PHP コードをこの正規表現ルールで置換すると次の様になります。

[
  'memberId' => $モデル等のオブジェクト変数名->memberId,
  'name' => $モデル等のオブジェクト変数名->name,
  'group' => [
    'groupId' => $モデル等のオブジェクト変数名->groupId,
    'name' => $モデル等のオブジェクト変数名->name,
  ],
]

 ネストの部分が誤った参照ですが、そこを正しい参照のコピペ繰り返しで直すだけですので格段に速く済みます。キャメルケース、スネークケースの変換が必要な場合があるやもしれませんがそれでも単語の区切り数分の手数が増えるだけです。

 ちなみにこのサービスは JSON の内容を wtools.io 運営のサーバに送信して、サーバ内で変換して、その結果を送り返しています。個人情報など外に漏らすべきでない情報を含む JSON を変換すべきではありません。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG