ข้อผิดพลาดของตัวแยกวิเคราะห์เมื่อแยกวิเคราะห์ JSON ใน PHP
การใช้ฟังก์ชัน json_last_error
สามารถทราบได้ว่ามีข้อผิดพลาดใดๆ
เกิดขึ้นในการแยกวิเคราะห์ JSON
มาดูกันว่า
ทำอย่างไร ให้เรามี
JSON ที่ไม่ถูกต้อง:
<?php
$json = '["a", "b", "c",]';
?>
ลองแยกวิเคราะห์มัน:
<?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 ได้