Trả lời câu hỏi
Hàm json_last_error
trả về lỗi cuối cùng xảy ra trong quá trình mã hóa và giải mã JSON. Vì vậy, cách nhanh nhất để kiểm tra JSON hợp lệ là
// decode the JSON data
// set second parameter boolean TRUE for associative array output.
$result = json_decode($json);
if (json_last_error() === JSON_ERROR_NONE) {
// JSON is valid
}
// OR this is equivalent
if (json_last_error() === 0) {
// JSON is valid
}
Lưu ý rằng chỉ json_last_error
được hỗ trợ trong PHP> = 5.3.0.
Chương trình đầy đủ để kiểm tra LRI chính xác
Luôn luôn là tốt để biết lỗi chính xác trong thời gian phát triển. Đây là chương trình đầy đủ để kiểm tra lỗi chính xác dựa trên các tài liệu PHP.
function json_validate($string)
{
// decode the JSON data
$result = json_decode($string);
// switch and check possible JSON errors
switch (json_last_error()) {
case JSON_ERROR_NONE:
$error = ''; // JSON is valid // No error has occurred
break;
case JSON_ERROR_DEPTH:
$error = 'The maximum stack depth has been exceeded.';
break;
case JSON_ERROR_STATE_MISMATCH:
$error = 'Invalid or malformed JSON.';
break;
case JSON_ERROR_CTRL_CHAR:
$error = 'Control character error, possibly incorrectly encoded.';
break;
case JSON_ERROR_SYNTAX:
$error = 'Syntax error, malformed JSON.';
break;
// PHP >= 5.3.3
case JSON_ERROR_UTF8:
$error = 'Malformed UTF-8 characters, possibly incorrectly encoded.';
break;
// PHP >= 5.5.0
case JSON_ERROR_RECURSION:
$error = 'One or more recursive references in the value to be encoded.';
break;
// PHP >= 5.5.0
case JSON_ERROR_INF_OR_NAN:
$error = 'One or more NAN or INF values in the value to be encoded.';
break;
case JSON_ERROR_UNSUPPORTED_TYPE:
$error = 'A value of a type that cannot be encoded was given.';
break;
default:
$error = 'Unknown JSON error occured.';
break;
}
if ($error !== '') {
// throw the Exception or exit // or whatever :)
exit($error);
}
// everything is OK
return $result;
}
Kiểm tra với JSON INPUT hợp lệ
$json = '[{"user_id":13,"username":"stack"},{"user_id":14,"username":"over"}]';
$output = json_validate($json);
print_r($output);
ĐẦU RA hợp lệ
Array
(
[0] => stdClass Object
(
[user_id] => 13
[username] => stack
)
[1] => stdClass Object
(
[user_id] => 14
[username] => over
)
)
Kiểm tra với JSON không hợp lệ
$json = '{background-color:yellow;color:#000;padding:10px;width:650px;}';
$output = json_validate($json);
print_r($output);
ĐẦU RA không hợp lệ
Syntax error, malformed JSON.
Ghi chú thêm cho (PHP> = 5.2 && PHP <5.3.0)
Vì json_last_error
không được hỗ trợ trong PHP 5.2, bạn có thể kiểm tra xem mã hóa hoặc giải mã có trả về boolean không FALSE
. Đây là một ví dụ
// decode the JSON data
$result = json_decode($json);
if ($result === FALSE) {
// JSON is invalid
}
Hy vọng điều này là hữu ích. Chúc mừng mã hóa!
json_decode
một lần ... đồng thời, kiểm tra giá trị đầu vào và trả về củajson_decode
.