ข้อผิดพลาดของตัวแยกวิเคราะห์เมื่อแยกวิเคราะห์ JSON ใน PHP

การใช้ฟังก์ชัน json_last_error สามารถทราบได้ว่ามีข้อผิดพลาดใดๆ เกิดขึ้นในการแยกวิเคราะห์ JSON มาดูกันว่า ทำอย่างไร ให้เรามี JSON ที่ไม่ถูกต้อง:

php<?php
  $json = '["a", "b", "c",]';
?>

ลองแยกวิเคราะห์มัน:

php<?php
  $data = json_decode($json);
  var_dump($data); // จะได้ null
?>

เนื่องจากมีข้อผิดพลาดเกิดขึ้น json_last_error เมื่อเรียกใช้จะให้หมายเลขข้อผิดพลาดนั้น:

php<?php
  $error = json_last_error();
  var_dump($error); // หมายเลขข้อผิดพลาด
?>

หมายเลขที่ส่งคืนสามารถนำไปเปรียบเทียบ กับค่าคงที่พิเศษของ PHP จากพื้นฐานนี้สามารถเขียนโค้ด ที่ดักจับข้อผิดพลาดประเภทต่างๆ:

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;
  }
?>
Задание 1

กำหนดสตริงที่มี JSON บางส่วน แยกวิเคราะห์เป็นโครงสร้างข้อมูล PHP แสดงผลการแยกวิเคราะห์ หรือสาเหตุของข้อผิดพลาด หากไม่สามารถแยกวิเคราะห์ JSON ได้