티스토리 뷰



PHP 5.2 이하에서 JSON 사용하기


php 는 5.2 이상 버전부터 json encoding, decoding 을 지원한다.

아래 링크 참조

http://php.net/manual/kr/function.json-encode.php


링크 상단에는 아래와 같이 표기되어있다.



json_encode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)

json_encode  값의 JSON 표현을 반환


나의 php version 은?


[root@mil1 ~]# php -v

PHP 5.1.6 (cli) (built: Jun 27 2012 12:21:13)

Copyright (c) 1997-2006 The PHP Group

Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies


5.1.6 버전...

요 상태에서 json을 이용해 보자.


PHP 5.1.6


<?php

$jsonTest = array(

'developer' => array(

array(

'name' => 'LEE',

'email' => 'ywlee861009@gmail'

),

array(

'name' => 'KIM',

'email' => 'testkim@test.com'

)

),

'designer' => array(

array(

'name' => 'CHOI',

'email' => 'choi@test.com'

),

array(

'name' => 'PARK',

'email' => 'park@test.com'

)

));

$jsonObj = (object) $jsonTest;


$encodedJson = json_encode($jsonObj);

?>


실행 결과


Fatal error: Call to undefined function json_encode() in /var/www/html/json.php on line 27


27번째 줄에 있는 json_encode function 을 찾을 수 없다고 나온다.







해결방법은?


해결방법은 사실 간단하다. 

php 5.2 이상 버전으로 업그레이드 해주면 되는것. 

하지만, 이 포스트의 목적은 그게 아님

부득이하게 현재의 php 버전을 유지해야만 하는 경우도 분명 있을 것이다.


그렇다면 php 5.1 버전을 사용하면 json 을 이용할 수 없는 것인가?

그렇지 않다.







JSON.php


아래의 파일을 받는다.


JSON.php

(바이러스나 설치파일이 아니니까 안심...)


해당 파일은 누가 만들었는지는 몰라도, php 5.2 버전 이하에서 json 을 이용할 수 있게 해주는 은혜로운 library 이다.


이제, 이 파일을 이용하여 json 을 사용해 보자.


<?php

if (!function_exists('json_decode')) {

    function json_decode($content, $assoc=false) {

        require_once 'libs/JSON.php';

        if ($assoc) {

            $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);

        }

        else {

            $json = new Services_JSON;

        }

        return $json->decode($content);

    }

}


if (!function_exists('json_encode')) {

    function json_encode($content) {

        require_once 'libs/JSON.php';

        $json = new Services_JSON;

        return $json->encode($content);

    }

}



$jsonTest = array(

'developer' => array(

array(

'name' => 'LEE',

'email' => 'ywlee861009@gmail'

),

array(

'name' => 'KIM',

'email' => 'testkim@test.com'

)

),

'designer' => array(

array(

'name' => 'CHOI',

'email' => 'choi@test.com'

),

array(

'name' => 'PARK',

'email' => 'park@test.com'

)

));

$jsonObj = (object) $jsonTest;


$encodedJson = json_encode($jsonObj);

echo $encodedJson;

?>


코드는 위코드에서,  json 파일을 include 하는것만 추가되었다.

(다운받은 json.php 파일은 libs  폴더에 넣어놓았다.)


맨 처음 작성했던 구문에서 뭐가 달라졌는지 보면 알 수 있겠지만,

php5.1.6 에서는 json_encode() 함수가 정의되어있지 않기 때문에, json_encode 나 decode 함수가 없을 경우

libs/JSON.php 의 함수를 불러와 실행하도록 되어있다.


실행결과


{"developer":[{"name":"LEE","email":"ywlee861009@gmail"},{"name":"KIM","email":"testkim@test.com"}],"designer":[{"name":"CHOI","email":"choi@test.com"},{"name":"PARK","email":"park@test.com"}]}






공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함