使用php的json_encode函数将数组转换成json字符给js处理?

大家都知道js在处理json的时候是非常方便的了,例如jsonM[i].name,就可获取到[{'name':'james'}, {'name','jacob'}]中的值了......此处省略1000字,但是大多情况下我们面对的问题是从据库读出数组后如何获得json格式字符 串呢,当然你可以用基本的循环拼字符串的方法,但这样一是很麻烦,因为json里面有很多' 或",有时遗漏程序会出错,进而你会非常抓狂,例如 如何判断最后一个元素,之后不加逗号就狠痛苦,因为同级Json字符串是不带逗号的,虽然加了好像没问题,但从严谨的角度写程序这是不合适的,不能太取巧 了,指不定哪天就出问题了.
闲话不多说,以下就说说我用Php+MYSql处理Json的方法吧,大家都知道,Php里有个函数叫 json_encode,这个函数可以将一个数组直接转换成json字符串!!!这个函数非常有用,他返回的结果就是我们要的东东,但我为什么还有说的必 要呢?因为到这里分两种情况,如果你的页面是Utf-8的,你可以把我这篇文章当成废话,如果是GBk的那么事情只完成了一半,因为 json_encode只支持Utf-8编码,如果是GBk的情况下
他会有选择的对其中的英文数字有效,而数组里的中文会以NULL来显示,这时 可以参考以下方法转换,当然你有更好的方法欢迎来扔出宝贵砖头(原狠简单 先将中文用urlencode变成一堆类似于%1%2%3%5%6的数字,转换后将Json字符串再用urldecode变回中文)

$rs = mysql_query($sql);

$arr = array();
$i = 0;//数组索引
while($row = mysql_fetch_array($rs)){
    //方法一
    $row['name1'] = urlencode($row['name1']);
    $row['name2'] = urlencode($row['name2']);
    $row['name3'] = urlencode($row['name3']);    
    $arr[$i] = $row;//默认Utf-8
    //方法二
//    $name1 = urlencode($row['name1']);
//    $name2 = urlencode($row['name2']);
//    $name3 = urlencode($row['name3']);
//    $arr[$i] = array('gd_id'=>$row['gd_id'],'attr1'=>$row['attr1'],'name1'=& gt;$name1,'attr2'=>$row['attr2'],'name2'=>$name2,'attr3'=& gt;$row['attr3'],'name3'=>$name3,'num1'=>$row['num1']);//转成Utf-8
    $i++;
}
print_r($arr);echo '<br/>';
$json_attr = json_encode($arr);echo urldecode($json_attr);





配合文件读写例子 不过太麻烦 还是用XML好些
            $fname = "user/user_conf.ini";
            //修改此处要删除以上文件才有效
            $str = json_encode(array(
            array("power"=>2,"name"=>urlencode("普通")),
            array("power"=>3,"name"=>urlencode("会员")),
            array("power"=>4,"name"=>urlencode("协会")))
            );
            echo $str = urldecode($str);
            if(file_exists($fname)){
                $file = fopen($fname,"rb+");
                $fsize = filesize($fnam);
                if($fsize>0)
                $str = fread($file,$fsize);
                fclose($file);
            }else{
                $file = fopen($fname,"wb+");
                fwrite($file,$str);
                fclose($file);
            }
            urlencode($str);
            $arrRule = json_decode($str);

posted @ 2012-04-04 00:19  永哥  阅读(3010)  评论(0)    收藏  举报