PHP에서 JSON 파싱 시 발생하는 파서 오류
json_last_error 함수를 사용하면
JSON 파싱 중 발생한 오류의 종류를
알 수 있습니다.
어떻게 하는지 살펴보겠습니다.
잘못된 JSON이 있다고 가정해 봅시다:
<?php
$json = '["a", "b", "c",]';
?>
이 JSON을 파싱해 보겠습니다:
<?php
$data = json_decode($json);
var_dump($data); // null을 출력합니다
?>
오류가 발생했으므로, json_last_error를
호출하면 해당 오류의 번호를 반환합니다:
<?php
$error = json_last_error();
var_dump($error); // 오류 번호
?>
반환된 번호는 PHP의 특정 상수와 비교할 수 있습니다. 이를 기반으로 다양한 유형의 오류를 잡아내는 코드를 작성할 수 있습니다:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo '오류 없음';
break;
case JSON_ERROR_DEPTH:
echo '최대 스택 깊이에 도달함';
break;
case JSON_ERROR_STATE_MISMATCH:
echo '잘못된 비트 또는 모드 불일치';
break;
case JSON_ERROR_CTRL_CHAR:
echo '잘못된 제어 문자';
break;
case JSON_ERROR_SYNTAX:
echo '구문 오류, 잘못된 JSON';
break;
case JSON_ERROR_UTF8:
echo '잘못된 UTF-8 문자, 잘못 인코딩되었을 수 있음';
break;
default:
echo '알 수 없는 오류';
break;
}
?>
일부 JSON이 담긴 문자열이 주어집니다. 이를 PHP 데이터 구조로 파싱하세요. 파싱 결과를 출력하거나, JSON을 파싱할 수 없는 경우 오류 원인을 출력하세요.