JSON json_last_error
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
json_last_error — 마지막으로 발생한 오류를 반환합니다.
설명
json_last_error(): int
JSON_THROW_ON_ERROR
를 지정하지 않은 마지막 JSON 인코딩/디코딩 중에 발생한 마지막 오류(있는 경우)를 반환합니다.
매개변수
이 함수에는 매개변수가 없습니다.
반환 값
정수를 반환하며 값은 다음 상수 중 하나일 수 있습니다.
JSON 오류 코드
상수 | Meaning | Availability |
---|---|---|
JSON_ERROR_NONE |
오류가 발생하지 않았습니다. | |
JSON_ERROR_DEPTH |
최대 스택 깊이를 초과했습니다. | |
JSON_ERROR_STATE_MISMATCH |
유효하지 않거나 형식이 잘못된 JSON | |
JSON_ERROR_CTRL_CHAR |
제어 문자 오류(잘못 인코딩되었을 수 있음) | |
JSON_ERROR_SYNTAX |
구문 오류 | |
JSON_ERROR_UTF8 |
잘못된 형식의 UTF-8 문자(잘못 인코딩되었을 수 있음) | |
JSON_ERROR_RECURSION |
인코딩할 값에 있는 하나 이상의 재귀 참조 | |
JSON_ERROR_INF_OR_NAN |
인코딩할 값의 하나 이상의 NAN 또는 INF 값 |
|
JSON_ERROR_UNSUPPORTED_TYPE |
인코딩할 수 없는 유형의 값이 제공되었습니다. | |
JSON_ERROR_INVALID_PROPERTY_NAME |
인코딩할 수 없는 속성 이름이 제공되었습니다. | |
JSON_ERROR_UTF16 |
잘못된 형식의 UTF-16 문자(잘못 인코딩되었을 수 있음) |
Examples
예제 #1 json_last_error() 예제
<?php
// A valid json string
$json[] = '{"Organization": "PHP Documentation Team"}';
// An invalid json string which will cause an syntax
// error, in this case we used ' instead of " for quotation
$json[] = "{'Organization': 'PHP Documentation Team'}";
foreach ($json as $string) {
echo 'Decoding: ' . $string;
json_decode($string);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
echo PHP_EOL;
}
?>
위의 예는 다음을 출력합니다.
Decoding: {"Organization": "PHP Documentation Team"} - No errors Decoding: {'Organization': 'PHP Documentation Team'} - Syntax error, malformed JSON
예제 #2 json_last_error()와 json_encode()
<?php
// An invalid UTF8 sequence
$text = "\xB1\x31";
$json = json_encode($text);
$error = json_last_error();
var_dump($json, $error === JSON_ERROR_UTF8);
?>
위의 예는 다음을 출력합니다.
string(4) "null" bool(true)
예제 #3 json_last_error() 및 JSON_THROW_ON_ERROR
<?php
// An invalid UTF8 sequence which causes JSON_ERROR_UTF8
json_encode("\xB1\x31");
// The following does not cause a JSON error
json_encode('okay', JSON_THROW_ON_ERROR);
// The global error state has not been changed by the former json_encode()
var_dump(json_last_error() === JSON_ERROR_UTF8);
?>
위의 예는 다음을 출력합니다.
bool(true)
기타
- json_last_error_msg() - 마지막 json_encode() 또는 json_decode() 호출의 오류 문자열을 반환합니다.
- json_decode() - JSON 문자열을 디코딩합니다
- json_encode() - 값의 JSON 표현을 반환합니다.