Lỗi trình phân tích cú pháp khi phân tích JSON trong PHP
Bằng hàm json_last_error
bạn có thể biết lỗi cụ thể nào
đã xảy ra khi phân tích cú pháp JSON.
Hãy xem cách
thực hiện điều này. Giả sử chúng ta có
một JSON không hợp lệ:
<?php
$json = '["a", "b", "c",]';
?>
Hãy thử phân tích nó:
<?php
$data = json_decode($json);
var_dump($data); // sẽ xuất ra null
?>
Vì đã xảy ra lỗi, nên json_last_error
khi được gọi sẽ trả về mã số của lỗi đó:
<?php
$error = json_last_error();
var_dump($error); // mã số lỗi
?>
Mã số trả về có thể được so sánh với các hằng số đặc biệt của PHP. Dựa trên điều này, bạn có thể viết mã bắt các loại lỗi khác nhau:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'Không có lỗi';
break;
case JSON_ERROR_DEPTH:
echo 'Đạt đến độ sâu tối đa của ngăn xếp';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'Bit không hợp lệ hoặc không khớp chế độ';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'Ký tự điều khiển không hợp lệ';
break;
case JSON_ERROR_SYNTAX:
echo 'Lỗi cú pháp, JSON không hợp lệ';
break;
case JSON_ERROR_UTF8:
echo 'Ký tự UTF-8 không hợp lệ, có thể mã hóa không đúng';
break;
default:
echo 'Lỗi không xác định';
break;
}
?>
Cho một chuỗi chứa JSON nào đó. Hãy phân tích nó thành cấu trúc dữ liệu PHP. In kết quả phân tích hoặc nguyên nhân lỗi nếu không thể phân tích được JSON.