PHP에서 중첩된(nested) JSON 구조를 만들려면 다차원 배열과 json_encode() 함수를 함께 사용하면 됩니다. 배열 안에 또 다른 연관 배열을 포함시키면, 인코딩 과정에서 자동으로 중첩 JSON 객체 형태로 변환됩니다.
기본 예제
아래 코드처럼 배열을 구성한 뒤 json_encode() 함수에 전달하면 원하는 JSON 구조를 손쉽게 생성할 수 있습니다.
$json = json_encode(array(
"client" => array(
"build" => "1.0",
"name" => "xxxx",
"version" => "1.0"
),
"protocolVersion" => 4,
"data" => array(
"distributorId" => "xxxx",
"distributorPin" => "xxxx",
"locale" => "en-US"
)
));위 코드의 실행 결과는 다음과 같은 JSON 문자열입니다.
{"client":{"build":"1.0","name":"xxxx","version":"1.0"},"protocolVersion":4,"data":{"distributorId":"xxxx","distributorPin":"xxxx","locale":"en-US"}}보기 좋게 출력하기
두 번째 인자로 JSON_PRETTY_PRINT 옵션을 추가하면 들여쓰기와 줄바꿈이 적용되어 사람이 읽기 쉬운 형태로 출력됩니다.
$json = json_encode($array, JSON_PRETTY_PRINT);
알아두면 좋은 점
json_encode()는 UTF-8로 인코딩된 문자열만 처리할 수 있으므로, 한글 같은 멀티바이트 문자를 다룰 때는 인코딩 설정에 주의해야 합니다.- 생성된 JSON 문자열을 다시 PHP 배열이나 객체로 되돌리려면
json_decode()함수를 사용하면 됩니다. - 중첩 깊이는 기본적으로 512단계까지 지원하며, 필요하다면 세 번째 인자로 깊이를 조절할 수 있습니다.