PHP - json_last_error() 函式



json_last_error() 函式可以返回發生的最後一個錯誤。

語法

int json_last_error( void )

json_last_error() 函式可以返回上次 JSON 編碼/解碼期間發生的最後一個錯誤(如果有)。

json_last_error() 函式可以返回一個整數,其值可以是以下常量之一

  • JSON_ERROR_NONE - 未發生錯誤
  • JSON_ERROR_DEPTH - 已超出最大堆疊深度
  • JSON_ERROR_STATE_MISMATCH - 無效或格式錯誤的 JSON
  • JSON_ERROR_CTRL_CHAR - 控制字元錯誤,可能編碼不正確
  • JSON_ERROR_SYNTAX - 語法錯誤。
  • JSON_ERROR_UTF8 - UTF-8 字元格式錯誤,可能編碼不正確
  • JSON_ERROR_RECURSION - 要編碼的值中存在一個或多個遞迴引用
  • JSON_ERROR_INF_OR_NAN - 要編碼的值中存在一個或多個 NAN 或 INF 值
  • JSON_ERROR_UNSUPPORTED_TYPE - 給定了一個無法編碼的型別的值
  • JSON_ERROR_INVALID_PROPERTY_NAME - 給定了一個無法編碼的屬性名稱
  • JSON_ERROR_UTF16 - UTF-16 字元格式錯誤,可能編碼不正確

示例

<?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;
   }
?>

輸出

Decoding: {"First Name": "Adithya"} - No errors
Decoding: {First Name': 'Adithya'} - Syntax error, malformed JSON
php_function_reference.htm
廣告