PHPda JSONni tahlil qilishda parser xatolari

json_last_error funksiyasi yordamida JSONni tahlil qilishda aniq qanday xato yuz berganligini bilib olishingiz mumkin. Keling, buni qanday qilib amalga oshirishni ko'rib chiqaylik. Faraz qilaylik, bizda noto'g'ri JSON mavjud:

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

Keling, uni tahlil qilishga harakat qilaylik:

php<?php
  $data = json_decode($json);
  var_dump($data); // null qiymatini chiqaradi
?>

Xato yuz bergani sababli, json_last_error chaqirilganda ushbu xatoning raqamini qaytaradi:

php<?php
  $error = json_last_error();
  var_dump($error); // xato raqami
?>

Qaytarilgan raqamni PHPning maxsus konstantalari bilan solishtirish mumkin. Shu asosda turli xil xato turlarini ushlab turadigan kod yozish mumkin:

php<?php
   switch (json_last_error()) {
    case JSON_ERROR_NONE:
      echo 'xatolar yo''q';
    break;
    case JSON_ERROR_DEPTH:
      echo 'stekning maksimal chuqurligiga erishildi';
    break;
    case JSON_ERROR_STATE_MISMATCH:
      echo 'noto''g''ri raqamlar yoki rejimlarning mos kelmasligi';
    break;
    case JSON_ERROR_CTRL_CHAR:
      echo 'noto''g''ri boshqaruv belgisi';
    break;
    case JSON_ERROR_SYNTAX:
      echo 'sintaktik xato, noto''g''ri JSON';
    break;
    case JSON_ERROR_UTF8:
      echo 'noto''g''ri UTF-8 belgilari, ehtimol noto''g''ri kodlangan';
    break;
    default:
      echo 'noma''lum xato';
    break;
  }
?>
Задание 1

Ma'lum bir JSON bilan satr berilgan. Uni PHP ma'lumotlar tuzilishiga tahlil qiling. Tahlil natijasini yoki agar JSONni tahlil qilish muvaffaqiyatsiz tugagan bo'lsa, xatoning sababini chiqaring.