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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- JSON 인코딩 및 디코딩
- cURL로 HTTP 요청 보내기
- API 응답 및 오류 처리
- 간단한 API 클라이언트 만들기