我的服务器是的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"';这样的问题?
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"';这样的问题?
用这个函数去替换即可解决版本兼容性问题!//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以下就用自己解析的那些。