PHP 배열을 손쉽게 JSON 형식으로 변환하기 : json_encode, json_decode

PHP 배열을 손쉽게 JSON 형식으로 변환하기 : json_encode, json_decode
Photo by Ben Griffiths / Unsplash

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과 배열 사용 시 주의할 점

  1. JSON 크기 제한 : 서버 환경에 따라 전송 가능한 JSON 크기가 제한될 수 있으니 주의하세요.
  2. UTF-8 인코딩 필요 : JSON 변환 시 데이터는 반드시 UTF-8 형식이어야 합니다.
  3. PHP 버전 : json_encode와 json_decode는 PHP 5.2.0 이상에서만 지원됩니다.

결론

json_encode와 json_decode는 PHP에서 JSON을 다루는 데 필수적인 함수입니다.

기본 사용법은 매우 간단하며, $assoc 옵션만 잘 이해하면 배열과 객체 간 변환도 문제없습니다.

함수 이름과 용도를 기억하고 있다면 필요할 때 쉽게 검색하며 활용할 수 있습니다. 😉