Yapılan son json işlemindeki hatayı kontrol etme
Yapılan son JSON işleminde bir hata oluşup oluşmadığını bu fonksiyon ile kontrol edebiliriz. Hata olduğunda php sabitlerine eşdeğer sayısal değerleri döndürecektir.
Bu sayısal değerler sırasıyla aşağıdaki sabitleri temsil etmektedir.
| Sabit | Tipi | Açıklama |
|---|---|---|
| JSON_ERROR_NONE | İnteger | Hata Yok |
| JSON_ERROR_DEPTH | İnteger | Maksimum yığın derinliği aşıldı |
| JSON_ERROR_STATE_MISMATCH | İnteger | Kusurlu Json formatı |
| JSON_ERROR_CTRL_CHAR | İnteger | Kontrol karakteri hatası |
| JSON_ERROR_SYNTAX | İnteger | Sözdizimi hatası |
| JSON_ERROR_UTF8 | İnteger | Kusurlu UTF-8 karakterleri PHP 5.3 |
| JSON_ERROR_RECURSION | İnteger | Geçersiz recursive referans değeri. PHP 5.5 |
| JSON_ERROR_INF_OR_NAN | İnteger | Geçersiz nan veya inf değeri. PHP 5.5 |
| JSON_ERROR_UNSUPPORTED_TYPE | İnteger | Geçersiz tip. PHP 5.5 |
| JSON_ERROR_INVALID_PROPERTY_NAME | İnteger | Geçersiz key. PHP 7.0 |
| JSON_ERROR_UTF16 | İnteger | Kusurlu UTF-16 karakterleri. PHP 7.0 |
Örnek;
// Geçersiz bir Json String
$string = "{'Gokhan':35,'Sinan':37,'Aslan':43}";
echo "Json: " . $string;
json_decode($string);
echo "<br>Hata: ";
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo "Hata Yok";
break;
case JSON_ERROR_DEPTH:
echo "Maksimum yığın derinliği aşıldı";
break;
case JSON_ERROR_STATE_MISMATCH:
echo "Kusurlu Json formatı";
break;
case JSON_ERROR_CTRL_CHAR:
echo "Kontrol karakteri hatası";
break;
case JSON_ERROR_SYNTAX:
echo "Sözdizimi hatası";
break;
case JSON_ERROR_UTF8:
echo "Kusurlu UTF-8 karakterleri";
break;
default:
echo "Bilinmeyen hata";
break;
}
Bu işlemin çıktısı aşağıdaki gibi olacaktır
Decoding: {'Peter':35,'Ben':37,'Joe':43}
Error: Syntax error
Bu metodu Php 5.3+ sürümü tarafından desteklenmektedir.