当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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 - json_last_error() Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。