PHP'de JSON Ayrıştırılırken Oluşan Ayrıştırıcı Hataları
json_last_error işlevi ile
JSON ayrıştırılırken tam olarak
hangi hatanın oluştuğunu
öğrenebiliriz.
Bunun nasıl yapıldığına bir
bakalım. Elimizde hatalı bir
JSON olduğunu varsayalım:
<?php
$json = '["a", "b", "c",]';
?>
Onu ayrıştırmaya çalışalım:
<?php
$data = json_decode($json);
var_dump($data); // null çıktısını verecek
?>
Bir hata oluştuğu için, json_last_error
çağrıldığında bu hatanın numarasını
verecektir:
<?php
$error = json_last_error();
var_dump($error); // hata numarası
?>
Döndürülen numara, PHP'nin özel sabitleri ile karşılaştırılabilir. Buna dayanarak, çeşitli hata türlerini yakalayan kod yazabiliriz:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'hata yok';
break;
case JSON_ERROR_DEPTH:
echo 'maksimum yığın derinliğine ulaşıldı';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'hatalı bitler veya mod uyumsuzluğu';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'hatalı kontrol karakteri';
break;
case JSON_ERROR_SYNTAX:
echo 'sözdizimi hatası, hatalı JSON';
break;
case JSON_ERROR_UTF8:
echo 'hatalı UTF-8 karakterleri, muhtemelen yanlış kodlanmış';
break;
default:
echo 'bilinmeyen hata';
break;
}
?>
Bazı JSON içeren bir dize verilmiştir. Onu bir PHP veri yapısına ayrıştırın. Ayrıştırma başarısız olduysa, ayrıştırma sonucunu veya hatanın nedenini yazdırın.