json_encode替代函数

来源:互联网 发布:达内软件科技有限公司 编辑:程序博客网 时间:2024/05/22 12:29

文章来源:http://www.kaifadi.com/php/288.html

大家都知道PHP里有一个很好用的JSON函数,json_encode,但是这个函数只有PHP5.2以上版本才支持,如果服务器版本是5.2以下版本的话无法使用,传统方法是手动拼接字符,然后前端eval,但是这种处理方法效率低,而且麻烦,可以考虑使用如下函数代替json_encode,经过本人测试,绝对好用!但是前端需要多加一道解码函数decodeURI或decodeURIComponent等进行解码!具体替代函数代码,请参考:

后台替代函数:jsonEncode(此函数为他人所写,在此只是调用演示)

<?phpfunction jsonEncode($var) {    if (function_exists('json_encode')) {        return json_encode($var);    } else {        switch (gettype($var)) {            case 'boolean':                return $var ? 'true' : 'false'; // Lowercase necessary!            case 'integer':            case 'double':                return $var;            case 'resource':            case 'string':                return '"'. str_replace(array("\r", "\n", "<", ">", "&"),                    array('\r', '\n', '\x3c', '\x3e', '\x26'),                    addslashes($var)) .'"';            case 'array':                // Arrays in JSON can't be associative. If the array is empty or if it                // has sequential whole number keys starting with 0, it's not associative                // so we can go ahead and convert it as an array.                if (empty ($var) || array_keys($var) === range(0, sizeof($var) - 1)) {                    $output = array();                    foreach ($var as $v) {                        $output[] = jsonEncode($v);                    }                    return '[ '. implode(', ', $output) .' ]';                }                // Otherwise, fall through to convert the array as an object.            case 'object':                $output = array();                foreach ($var as $k => $v) {                    $output[] = jsonEncode(strval($k)) .': '. jsonEncode($v);                }                return '{ '. implode(', ', $output) .' }';            default:                return 'null';        }    }}$arr=array('name'=>'CSDN论坛','degree'=>'numberone');echo jsonEncode($arr);?>


前端调用:以$.ajax为例:

 

$.ajax(    url:'后台php文件名',    type:'GET',    dataType:'json',   success:function(data){     decodeURI(data.name);//如果PHP为5.2以上版本,这里可以不用加decodeURI解码,但是5.2以下必须加。区别于此,请注意!  }
如果使用上遇到问题,可以和我联系!




原创粉丝点击