본문 바로가기

프로그래밍

[php] json_encode 함수가 없을때 해결 방법

ajax나 외부 자료 연동등을 위해 json 규격을 활용해야 할때가 많습니다.

그때 json_encode가 지원되지 않는 서버일 경우가 있습니다.

아래와 같이 json_encode 함수를 직접 정의하여 활용해 보십시오.


function json_encode($a=false){ 

if(is_null($a)) return 'null'; 

if($a === false) return 'false'; 

if($a === true) return 'true'; 

if(is_scalar($a)){ 

if(is_float($a)) return floatval(str_replace(",", ".", strval($a))); 

if(is_string($a)){ 

static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"')); 

return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"'; 

} else return $a; 

$isList = true; 

for($i=0, reset($a); $i<count($a); $i++, next($a)){ 

if(key($a) !== $i){ 

$isList = false; 

break; 

$result = array(); 

if($isList){ 

foreach($a as $v) $result[] = json_encode($v); 

return '[' . join(',', $result) . ']'; 

} else{ 

foreach($a as $k => $v) $result[] = json_encode($k).':'.json_encode($v); 

return '{' . join(',', $result) . '}'; 




공용 모듈 등에 쓰기 위하여 서버의 지원여부에 상관없이 쓰고자 하신다면, 아래와 같이 지원여부 확인을 위한 코드를 넣으시면 됩니다.


if(!function_exists("json_encode")){ 

  // 여기에 위의 소스를 넣으세요.

}