HTML_AJAX_JSONでちょっと困ること
2007年7月9日
PHPのPEARライブラリである、HTML_AJAX_JSONで
微妙に不便なところが
微妙に不便なところが
というのは、例えば以下のPHP配列をJSON化しているコード
<?php $source = array(1,2,3); require_once "/path/to/HTML_AJAX-0.5.0/AJAX/JSON.php"; $haj =& new HTML_AJAX_JSON; $json = $haj->encode($source); echo $json; // -> "[1,2,3]"を出力
これ、勝手に「JS上も配列ッ!」って判断されてますが
{"0":1, "1":2, "2":3}
JS側でこういう風に整形して欲しいことも、あるんじゃないのと。
オプション指定とかで変えられるのかと思って、該当箇所を見てみると
// $var が、JSON化の元となるPHP配列 if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { // JSの連想配列として文字列生成を行う処理 }
つまり、[0][1][2]… と、0から連番で振られている配列は、JS上も配列とみなすってことらしいです。
逆に言えば、[0][1][3] とか [1][2][3] とかは、必ず連想配列になってしまう。
PHP側のオブジェクトをJSON化するとJS側は連想配列になるので、
それを使おうかと思ったら、”var $0″ とかは宣言できないし。
なるほどなぁ
PHP的に仕方ない気もしますけど
実際困ってるんだこのやろう
PHP的に仕方ない気もしますけど
実際困ってるんだこのやろう
・・・と、krsort関数とかで、0123…の順番を変えればいいのか。
頭固いなー