PHPでJSONを扱う
JSONってなに?
JSON(JavaScript Object Notation)は、テキストフォーマットの一種です。シンプルで
開発者が理解しやすい構造をしており、コンピュータにとっては高速で処理しやすいというすぐれもの。
WebAPIなどを使って引っ張ってくる形式のファイルはCSV、XML、JSONのうちどれかですが、
最近の主流はJSON。構造がJavaScriptの連想配列と似ている(というかそのまま?)ので、はじめて
見る人でも理解しやすい。
PHPでJSON処理
下記のようなjsonファイルを用意しました(test.json)。ゲームなんかで使えそうな タイプです。
{ "id" : 24, "name" : "勇者A", "status" : { "hp" : 175, "mp" : 50 }, "item" : { "money" : 25000, "sword" : [ { "name" : "錆びた剣", "atk_point" : 50 }, { "name" : "ライトセーバー", "atk_point" : 350 } ] } }
これをPHPで処理します。具体的には下のコードを参照してください。
<?php $pass = "test.json"; $json = file_get_contents($pass); if (!empty($json)) { $json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); // 連想配列として扱いたい場合は、第2引数にtrueを渡す $obj = json_decode($json); } ?> <!DOCTYPE html> <html lang="ja"> <head> <title>TestJSON</title> <meta charset="utf-8"> </head> <body> <p>ID: <?=$obj->id?></p> <p>名前: <?=$obj->name?></p> <p>HP: <?=$obj->status->hp?></p> <p>MP: <?=$obj->status->mp?></p> <p>所持金: <?=$obj->item->money?></p> <?php foreach ($obj->item->sword as $val): ?> <p>剣の名前: <?=$val->name?></p> <p>剣の攻撃力: <?=$val->atk_point?></p> <?php endforeach; ?> </body> </html>
WebAPIなんかを利用する場合は$passの部分にURLを書きます。今回はなるべくシンプルにした かったのでこのようなコードになりました。コメントアウトにもあるとおり、連想配列として扱いたい場合、 json_decode()の引数にtrueを渡してやります。 僕はオブジェクトとして扱う方が好きなので 今回は使っていません。
$ary = json_decode($json, true);
説明するまでもないですが、これでjsonの内容がすべて出力されます。