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.