PHP 배열을 손쉽게 JSON 형식으로 변환하기 : json_encode, json_decode
PHP를 사용하면서 배열은 정말 많이 사용됩니다. 특히, 데이터를 주고받거나 AJAX 호출에 JSON을 활용할 때, 배열과 JSON 간 변환은 필수적인 작업입니다. 이 글에서는 PHP의 json_encode와 json_decode 함수로 JSON과 배열을 간단하게 변환하는 방법을 소개합니다.
JSON이란?
JSON (JavaScript Object Notation)은 데이터를 교환하기 위해 자바스크립트의 구문을 기반으로 만들어진 독립형 데이터 형식입니다.
- 여러 프로그래밍 언어(C, Java, Python 등)에서 지원됩니다.
- 배열과 유사한 구조로 데이터를 표현하지만, 출력 시 문자열 형태로 표현됩니다.
json 예시:
{ "a": { "b": "c", "d": ["e", "f", 0] } }
PHP 배열을 JSON으로 변환하기 (json_encode)
json_encode 함수는 PHP 배열을 JSON 형식으로 변환합니다.
사용법:
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
- $value: JSON으로 변환할 데이터 (배열 또는 객체).
- $options: JSON 변환에 사용될 옵션 (잘 사용하지 않아도 무방).
- $depth: 깊이 제한 (기본값 512).
예제:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
결과:
{"a":1,"b":2,"c":3,"d":4,"e":5}
복잡한 연관 배열도 문제없이 변환할 수 있습니다.
JSON 데이터를 PHP 배열로 변환하기 (json_decode)
json_decode 함수는 JSON 문자열을 PHP 배열 또는 객체로 변환합니다.
사용법:
mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )
- $json: JSON 문자열.
- $assoc: TRUE일 경우 연관 배열로 변환. FALSE(기본값)일 경우 객체로 변환.
- $depth: 변환 가능한 깊이.
- $options: 추가 옵션.
예제:
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json)); // 객체로 변환
var_dump(json_decode($json, true)); // 배열로 변환
?>
결과:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
$assoc 옵션 주의
- $assoc = false (기본값): Object 형식으로 변환.
- 호출 방법: $arr->a
- $assoc = true: 배열 형식으로 변환.
- 호출 방법: $arr['a']
Tip: JSON과 배열 사용 시 주의할 점
- JSON 크기 제한 : 서버 환경에 따라 전송 가능한 JSON 크기가 제한될 수 있으니 주의하세요.
- UTF-8 인코딩 필요 : JSON 변환 시 데이터는 반드시 UTF-8 형식이어야 합니다.
- PHP 버전 : json_encode와 json_decode는 PHP 5.2.0 이상에서만 지원됩니다.
결론
json_encode와 json_decode는 PHP에서 JSON을 다루는 데 필수적인 함수입니다.
기본 사용법은 매우 간단하며, $assoc 옵션만 잘 이해하면 배열과 객체 간 변환도 문제없습니다.
함수 이름과 용도를 기억하고 있다면 필요할 때 쉽게 검색하며 활용할 수 있습니다. 😉