読者です 読者をやめる 読者になる 読者になる

WebEngine

web、プログラミング関係について書いていきます。あなたの優しい眼差しがブログの成長につながりますのでどうぞよろしく。

PHPでJSONを扱う

JSONってなに?

JSON(JavaScript Object Notation)は、テキストフォーマットの一種です。シンプルで 開発者が理解しやすい構造をしており、コンピュータにとっては高速で処理しやすいというすぐれもの。
WebAPIなどを使って引っ張ってくる形式のファイルはCSVXMLJSONのうちどれかですが、 最近の主流はJSON。構造がJavaScript連想配列と似ている(というかそのまま?)ので、はじめて 見る人でも理解しやすい。


PHPJSON処理

下記のような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の内容がすべて出力されます。

広告を非表示にする