2011.09.16
【PHP】データのJSONとXMLのへ同時出力
いろんなWebサービスを使っていて思うのはJSONとXMLに対応しているパターンが多い。
そんなに簡単に出力を切り替えられるものなのかを試してみました。
いろいろ調べてこんなものが出来上がりました。
<?php
include_once("XML/Serializer.php");
//適当にデータ作り
class responce
{
public $inu;
public $ary;
}
class neko
{
public $a = 10;
public $b = 20;
public $c = 30;
};
$data = new responce();
$data->inu = new neko();
$data->ary = array( 50, 60, 70 );
//テキスト表示
header('Content-type: text/plain; charset=utf-8');
//XML出力
print "--- XML出力 ---\n";
$options = array(
XML_SERIALIZER_OPTION_INDENT => "\t",
XML_SERIALIZER_OPTION_XML_ENCODING => 'UTF-8',
XML_SERIALIZER_OPTION_XML_DECL_ENABLED => TRUE,
);
$serializer = new XML_Serializer( $options );
$serializer->setOption('mode','simplexml');
//STRICTのWarningが連打されるので一時的にエラー出力をカット
//使い終わったら元に戻す。
error_reporting(0);
$serializer->serialize( $data );
error_reporting(E_ALL);
print $serializer->getSerializedData();
print "\n\n";
print "--- JSON出力 ---\n";
print json_encode( $data );
?>
出力がこんな感じ
--- XML出力 ---
<?xml version="1.0" encoding="UTF-8"?>
<responce>
<inu>
<a>10</a>
<b>20</b>
<c>30</c>
</inu>
<ary>50</ary>
<ary>60</ary>
<ary>70</ary>
</responce>
--- JSON出力 ---
{"inu":{"a":10,"b":20,"c":30},"ary":[50,60,70]}
うん、めちゃ簡単ですね。
しっかりとした元データを作れればそれくらいは簡単ということがよくわかりました。







関連記事