0Pricing
PHP Academy · 강의

JSON 인코딩 및 디코딩

PHP 배열을 JSON으로 변환하고 json_encode/json_decode로 JSON 응답을 해석합니다.

JSON 인코딩 및 디코딩은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

JSON이란 무엇인가요

JSON(JavaScript 객체 표기법)은 API 통신과 구성 파일에 사용되는 경량 데이터 형식입니다. PHP에는 이를 인코딩하고 디코딩하는 내장 함수가 있습니다.

json_encode()

PHP 값(배열, 객체, 스칼라)을 JSON 문자열로 변환합니다.

<?php
$data   = ["name" => "Alice", "age" => 30, "active" => true];
$json   = json_encode($data);
echo $json; // {"name":"Alice","age":30,"active":true}

json_decode()

JSON 문자열을 구문 분석하고 PHP 값을 반환합니다. 기본적으로 stdClass 객체를 반환하며, 두 번째 인수로 true를 전달하면 연관 배열을 반환합니다.

<?php
$json = '{"name":"Alice","age":30}';
$obj  = json_decode($json);          // stdClass
$arr  = json_decode($json, true);    // associative array
echo $arr["name"]; // "Alice"

JSON 보기 좋게 출력하기

사람이 읽기 쉽도록 출력 형식을 지정하려면 JSON_PRETTY_PRINT 플래그를 사용하세요.

<?php
$json = json_encode(["a" => 1, "b" => 2], JSON_PRETTY_PRINT);
echo $json;
// {
//     "a": 1,
//     "b": 2
// }

유용한 json_encode 플래그

자주 사용하는 플래그는 다음과 같습니다. JSON_UNESCAPED_UNICODE(UTF-8 문자를 그대로 유지), JSON_UNESCAPED_SLASHES(/ 앞에 백슬래시를 넣지 않음), JSON_THROW_ON_ERROR(실패 시 예외 발생).

<?php
$json = json_encode(["url" => "https://example.com/path"],
    JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

오류 처리

인코딩 또는 디코딩 후 json_last_error()를 확인하거나, JSON_THROW_ON_ERROR를 사용해 예외가 자동으로 발생하도록 하세요.

<?php
try {
    $data = json_decode($input, true, 512, JSON_THROW_ON_ERROR);
} catch (\JsonException $e) {
    echo "Invalid JSON: ".$e->getMessage();
}

객체 인코딩

객체는 JSON 객체로 인코딩됩니다. 기본적으로 public 프로퍼티만 포함됩니다. 직렬화를 제어하려면 JsonSerializable을 구현하세요.

<?php
class Point implements \JsonSerializable {
    public function __construct(
        private float $x, private float $y
    ) {}
    public function jsonSerialize(): mixed {
        return ["x" => $this->x, "y" => $this->y];
    }
}
echo json_encode(new Point(1.0, 2.5)); // {"x":1,"y":2.5}

중첩 구조

JSON은 중첩을 지원합니다. 깊게 중첩된 PHP 배열도 중첩된 JSON 객체 또는 배열로 매끄럽게 인코딩됩니다.

<?php
$order = [
    "id"    => 1,
    "items" => [
        ["sku" => "A1", "qty" => 2],
        ["sku" => "B3", "qty" => 1],
    ],
];
echo json_encode($order, JSON_PRETTY_PRINT);

디코딩 깊이

json_decode의 세 번째 매개변수는 최대 재귀 깊이를 설정합니다(기본값 512). 매우 깊은 JSON에는 더 높은 제한이 필요할 수 있습니다.

JSON_NUMERIC_CHECK

JSON_NUMERIC_CHECK 플래그는 인코딩 중 숫자로 된 문자열을 숫자로 변환합니다. 전화번호가 손상될 수 있으므로 주의해서 사용하세요.

대용량 JSON 스트리밍 처리

매우 큰 JSON 파일에는 전체 파일을 json_decode로 불러오는 대신 스트리밍 구문 분석 라이브러리(예: halaxa/json-machine)를 사용하세요.

요약

json_encode는 PHP 값을 JSON 문자열로 변환합니다. json_decode는 JSON을 구문 분석합니다. 안전하게 오류를 처리하려면 JSON_THROW_ON_ERROR를 사용하세요.

빠른 확인

json_decode에서 연관 배열을 얻으려면 어떻게 해야 하나요?

자주 묻는 질문

“JSON 인코딩 및 디코딩” 강의는 무료인가요?

네 — “JSON 인코딩 및 디코딩” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“JSON 인코딩 및 디코딩”에서 뭘 배우나요?

PHP 배열을 JSON으로 변환하고 json_encode/json_decode로 JSON 응답을 해석합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

PHP Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“JSON 인코딩 및 디코딩” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. JSON 인코딩 및 디코딩
  2. cURL로 HTTP 요청 보내기
  3. API 응답 및 오류 처리
  4. 간단한 API 클라이언트 만들기
← PHP Academy(으)로 돌아가기