忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/23 08:45 |
Zend Framework2.0 Zend\Json
Jsonを気軽に扱えるようになるクラス…ではなく、XMLからJsonに変換するクラスです。
なにしろPHPにはjson_decodeという便利極まりない関数がデフォルト装備されているので、単にJsonを扱うだけのクラスはぶっちゃけ不要なんですよね。
<?php
	require_once('channel/vendor/autoload.php');
	
	$array = array('foo'=>'bar', 1=>2);
	$xml= '<書籍目録> <書名>XML入門</書名> <著者>筒井</著者> <書名>続・XML入門</書名> <著者>小松</著者> </書籍目録>';

	//エンコード
	$json = Zend\Json\Json::encode($array);
	
	//デコード
	$stdClass = Zend\Json\Json::decode($json);
	
	// JSONの整形
	$jsonPritty = Zend\Json\Json::prettyPrint($json, array("indent" => " "));
	
	// XMLからJsonに
	$jsonXml = Zend\Json\Json::fromXml($xml);
	$stdClassXml = Zend\Json\Json::decode($jsonXml);
	
	var_dump($json, $stdClass, $jsonXml, $stdClassXml);
結果。
string(19) "{"foo":"bar","1":2}"

object(stdClass)#2 (2) {
  ["foo"]=>
  string(3) "bar"
  ["1"]=>
  int(2)
}

string(142) "{"\u66f8\u7c4d\u76ee\u9332":{"\u66f8\u540d":["XML\u5165\u9580","\u7d9a\u30fbXML\u5165\u9580"],"\u8457\u8005":["\u7b52\u4e95","\u5c0f\u677e"]}}"

object(stdClass)#3 (1) {
  ["書籍目録"]=>
  object(stdClass)#7 (2) {
    ["書名"]=>
    array(2) {
      [0]=>
      string(9) "XML入門"
      [1]=>
      string(15) "続・XML入門"
    }
    ["著者"]=>
    array(2) {
      [0]=>
      string(6) "筒井"
      [1]=>
      string(6) "小松"
    }
  }
}
めでたくJsonに変換、およびJsonから元に戻すことができました。
簡単ですね。
ただしJsonからXMLに戻すことができないという片手落ちです。なんでだ。

Zend\Json\Jsonと同じ場所にZend\Json\Encoder、Decoderクラスがあり、一見これを使ってエンコードデコードしているように見えますが、実はjson_encodeが存在すればそれを使ってエンコードしています。
json_encodeが存在しない場合のみZend\Json\Encoderを使って自力でエンコードします。
ところでZF2.0の最低要求バージョンはPHP5.3であり、json_encode()はPHP5.2からPHPコアに含まれ標準インストールされます。
つまりZend\Json\Encoder/Decoderクラスは死にクラス。
	Zend\Json\Json::$useBuiltinEncoderDecoder = true;
とするとjson_encode()を使わないようにできますが、ネイティブ関数を拒否してあえて再発明をする理由も見当たらず、存在意義は不明です。

ちなみにJson::encode()に配列ではなくインスタンスを渡した場合、そのクラスにtoJson()メソッドがあればそちらを呼んで返してくれるといった隠し機能もありますが、直接読んだ方が早いので出番はありません。
PR


2012/12/24 21:14 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<デッドアイランド ZOTY脱出記 4日目 | HOME | 買ったものリスト 2012/12/23>>
忍者ブログ[PR]