티스토리 뷰
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
아래의 파일을 받는다.
(바이러스나 설치파일이 아니니까 안심...)
해당 파일은 누가 만들었는지는 몰라도, 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"}]}
끝
'Computer > 웹' 카테고리의 다른 글
( 스탯카운터 ) 2017 한국 인터넷 브라우저 점유율 (0) | 2017.08.10 |
---|---|
(PHP) 리눅스 php , mssql 연동 (0) | 2017.07.04 |
(PHP) 값이 숫자인지 판단 (1) | 2017.06.27 |
Javascript 로 html 태그에 class, id 추가하기 (2) | 2017.06.24 |
syntax error 확인 (0) | 2017.05.02 |
- Total
- Today
- Yesterday
- Kotlin
- xcode
- php
- C
- linux
- 서버
- 점유율
- 깃헙
- Phaser
- git hub
- 손석희
- CentOS
- 스위프트
- Asterisk
- nodejs
- 노드
- Node
- 뉴스룸
- 안드로이드
- 앵커브리핑
- C언어
- Android
- 배열
- BBC 가쉽
- node.js
- Swift
- GIT
- IOS
- mysql
- 리눅스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |