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]}

うん、めちゃ簡単ですね。

しっかりとした元データを作れればそれくらいは簡単ということがよくわかりました。

Pocket

ニャッキ格闘列伝 > プログラム >

前の記事:
次の記事:

コメントリスト

コメントなし

コメント



*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

こんなタグが使えるみたいよ:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>