首页 > 代码库 > php自定义json_encode()和json_decode()函数

php自定义json_encode()和json_decode()函数

json数据大家应该遇到过,json_encode()和json_decode()是php5.0以后加上的内置函数,如果低版本要使用,需加扩展,很多时候我们无权改变服务器的配置,我们只能通过自定义函数来实现这两个函数,其实所有的系统内置函数,基本上我们都是可以自己来定义的。

if (!function_exists(‘json_encode‘)) {function json_encode($array = array()) {if(!is_array($array)) return null;$json = "";$i = 1;$comma = ",";$count = count($array);foreach($array as $k=>$v){if($i==$count) $comma = "";if(!is_array($v)){$v = addslashes($v);$json .= ‘"‘.$k.‘":"‘.$v.‘"‘.$comma;}else{$json .= ‘"‘.$k.‘":‘.json_encode($v).$comma;}$i++;}$json = ‘{‘.$json.‘}‘;return $json;}}if (!function_exists(‘json_decode‘)) {function json_decode($json, $assoc = true) {$comment = false;$out     = ‘$x=‘;$json = preg_replace(‘/:([^"}]+?)([,|}])/i‘, ‘:"\1″\2′, $json);for ($i=0; $i<strlen($json); $i++) {if (!$comment) {if (($json[$i] == ‘{‘) || ($json[$i] == ‘[‘)) {$out .= array(‘;}elseif (($json[$i] == ‘}‘) || ($json[$i] == ‘]‘)) {$out .= ‘)‘;}elseif ($json[$i] == ‘:‘) {$out .= ‘=>‘;}elseif ($json[$i] == ‘,‘) {$out .= ‘,‘;}elseif ($json[$i] == ‘"‘) {$out .= ‘"‘;}}else $out .= $json[$i] == ‘$‘ ? ‘\$‘ : $json[$i];if ($json[$i] == ‘"‘ && $json[($i-1)] != ‘\\‘)  $comment = !$comment;}eval($out. ‘;‘);return $x;}}

 

php自定义json_encode()和json_decode()函数