近頃、データ形式のやりとりに「JSON」を使う場面が多くなってきています。 PHPのデータを簡単にJSON形式に変換するライブラリには、「PEAR::Services_JSON」「Zend/Json.php」「php-jsonモジュール」等があります。それらの簡単な使用方法を紹介します。

●PEAR::Services_JSONの場合

現在このパッケージはPEARに正式登録されていません。 その為、pearコマンドではインストールすることができませんので、 以下のページよりダウンロードを行い、設置してください。

ダウンロード(http://mike.teczno.com/JSON.tar.gz)

あとは、非常に簡単なコードでJSON形式のデータに変換することができます。

<?php
require_once "JSON.php";

$arr = array(
    array(
        
"name" => "アシアル",
        
"url"  => "http://www.asial.co.jp/"
    
),
    array(
        
"name" => "PHPプロ",
        
"url"  => "http://www.phppro.jp/"
    
)
);

$json = new Services_JSON;
$encode $json->encode($arr);
header("Content-Type: text/javascript; charset=utf-8");
echo 
$encode;
?>

これだけで、PHPの配列をJSON形式で出力することができます。 実際に出力されたデータは以下のようになっています。

[{"name":"\u30a2\u30b7\u30a2\u30eb","url":"http://www.asial.co.jp/"},
{"name":"PHP\u30d7\u30ed","url":"http://www.phppro.jp/"}]

これをJavaScript側でeval()をすることでObjectとして扱うことができます。

//XMLHttpRequestの完了時のアクション
function ajax_complete_action(request) {
    var json = eval(request.responseText);  // ← この行
    var html = "";
    for (var i = 0; i < json.length; i++) {
        html += '<a href="' + json.url + '">' + json.name + '</a>';
    }
    document.body.innerHTML = html;
}

また、「Zend/Json.php」、「php-jsonモジュール」の場合も以下のように簡単 に変換することができます。

●Zend/Json.phpの場合

Zend Framework(http://framework.zend.com/)をダウンロードしinclude_pathの 通った場所に設置します。

<?php
require_once "Zend/Json.php";
$encode Zend_Json::encode($arr);
header("Content-Type: text/javascript; charset=utf-8");
echo 
$encode;
?>

●拡張モジュールのphp-jsonモジュールを使用する場合

php-json(http://www.aurore.net/projects/php-json/)からダウンロードし extension_dirに配置します。(なお、このモジュールはPHP5.2に追加される予定です)

そして、php.iniで

extension=php_json.so (Linuxの場合)
extension=php_json.dll (Windowsの場合)

とするか、もしくはdl()関数で呼び出します。

<?php
//php.iniで設定してない場合、dl()で読み込む
if (!extension_loaded("json")) {
  
dl("./json.so"); // エクステンションのロード
}
$encode json_encode($arr);
header("Content-Type: text/javascript; charset=utf-8");
echo 
$encode;
?>

※上記のコードはいずれも文字コードをUTF-8にしないとうまく動作しません。

今後、ますますAjaxアプリ等が増えていき、JSONを使う場面も出てくると思われ ます。 そんな時にはこれらのライブラリを検討してみてはいかがでしょう。



(アシアル 中川善樹)


この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。