PHP - Fonction json_last_error ()

La fonction json_last_error () peut renvoyer la dernière erreur survenue.

Syntaxe

int json_last_error( void )

La fonction json_last_error () peut renvoyer la dernière erreur (le cas échéant) survenue lors du dernier encodage / décodage JSON.

La fonction json_last_error () peut retourner un entier, et la valeur peut être l'une des constantes suivantes:

  • JSON_ERROR_NONE - Aucune erreur ne s'est produite
  • JSON_ERROR_DEPTH - La profondeur maximale de la pile a été dépassée
  • JSON_ERROR_STATE_MISMATCH - JSON invalide ou mal formé
  • JSON_ERROR_CTRL_CHAR - Erreur de caractère de contrôle, éventuellement mal encodée
  • JSON_ERROR_SYNTAX - Erreur de syntaxe.
  • JSON_ERROR_UTF8 - Caractères UTF-8 mal formés, éventuellement mal encodés
  • JSON_ERROR_RECURSION - Une ou plusieurs références récursives dans la valeur à encoder
  • JSON_ERROR_INF_OR_NAN - Une ou plusieurs valeurs NAN ou INF dans la valeur à encoder
  • JSON_ERROR_UNSUPPORTED_TYPE - Une valeur d'un type qui ne peut pas être encodée a été donnée
  • JSON_ERROR_INVALID_PROPERTY_NAME - Un nom de propriété qui ne peut pas être encodé a été donné
  • JSON_ERROR_UTF16 - Caractères UTF-16 mal formés, éventuellement mal encodés

Exemple

<?php 
   // A valid json string
   $json[] = '{"First Name": "Adithya"}';
     
   // An invalid json string which causes an syntax 
   // error, in this case we used ' instead of " for quotation
   $json[] = "{First Name': 'Adithya'}";
   foreach($json as $string) {
      echo "Decoding: " . $string;
      json_decode($string);
      switch(json_last_error()) {
         case JSON_ERROR_NONE:
         echo " - No errors";
         break;
         case JSON_ERROR_STATE_MISMATCH:
         echo " - Underflow or the modes mismatch";
         break;
         case JSON_ERROR_DEPTH:
         echo " - Maximum stack depth exceeded";
         break;
         case JSON_ERROR_CTRL_CHAR:
         echo " - Unexpected control character found";
         break;
         case JSON_ERROR_SYNTAX:
         echo " - Syntax error, malformed JSON";
         break;
         default:
         echo " - Unknown error";
         break;
     }   
     echo PHP_EOL;
   }
?>

Production

Decoding: {"First Name": "Adithya"} - No errors
Decoding: {First Name': 'Adithya'} - Syntax error, malformed JSON