我的服务器是的php版本是5.1.6,无法用json_decode解析,如$json = '"125365"';
var_dump(json_decode($json, true));5.1.6版本返回的是null5.3.5版本返回的是string(6) "125365"我在5.1.6版本上用了json.class.php和Services_JSON.php等类,用来解决低版本的json_decode的问题,
但还是不能解析$json = '"125365"';这样的问题?

解决方案 »

  1.   

    1,安装php5.2.xxx版本,得到其中的json.so动态链接库,然后复制到5.1.6的/usr/lib/php/modules里边,修改php.ini,extension=json.so,重启apache。2,或者也可以自己写so,json和数组转换的蛮容易的不推荐用class解析json,速度太慢
      

  2.   

    5.2以上才有json_encode,json_decode函数,看来楼主手册没认真看啊!
    用这个函数去替换即可解决版本兼容性问题!//json_encode替代函数
    function 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':
                 
                    if (empty ($var) || array_keys($var) === range(0, sizeof($var) - 1)) {
                        $output = array();
                        foreach ($var as $v) {
                            $output[] = jsonEncode($v);
                        }
                        return '[ '. implode(', ', $output) .' ]';
                    }
                  
                case 'object':
                    $output = array();
                    foreach ($var as $k => $v) {
                        $output[] = jsonEncode(strval($k)) .': '. jsonEncode($v);
                    }
                    return '{ '. implode(', ', $output) .' }';
                default:
                    return 'null';
            }
        }
    }
    这个代码肯定可行。项目里已经测试过了。5。2以上用系统定义的json_encode,5。2以下就用自己解析的那些。
      

  3.   

    感谢大家!升级了一下Services_JSON.php,现在可以了