添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
还单身的镜子  ·  [SOLVED] PHP curl 401 ...·  3 周前    · 
稳重的皮带  ·  PHP: array_filter - ...·  3 周前    · 
爱旅游的打火机  ·  PHP: ...·  1 周前    · 
奔放的打火机  ·  FAQ - 常见问题 — ...·  昨天    · 
咆哮的梨子  ·  Client Challenge·  3 月前    · 
胆小的签字笔  ·  终生嗜好 ...·  2 年前    · 

json_last_error

$list = json_decode($value, true); 
if (json_last_error() !== JSON_ERROR_NONE) {
   // JSON解析错误
   $list = ['解析错误'];
}

在PHP中,将字符串转换为数组是很常规的操作,但是有一些字符串会因为不完整而导致解析错误。这时候就可以使用json_last_error进行判断了。

json_last_error() 是 PHP 中的一个函数,用于返回最后一次 JSON 编码或解码操作时发生的错误代码。

基本语法

json_last_error(): int

返回值

该函数返回一个整数错误代码,不同的错误代码对应不同的错误类型,常见的错误代码及含义如下:

  • 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
// 一个无效的 JSON 字符串
$invalidJson = '{name: "John", age: 30}';
// 尝试解码
$decoded = json_decode($invalidJson);
// 检查是否有错误
if (json_last_error() !== JSON_ERROR_NONE) {
    switch (json_last_error()) {
        case JSON_ERROR_DEPTH:
            echo '达到了最大堆栈深度';
            break;
        case JSON_ERROR_STATE_MISMATCH:
            echo '无效或异常的 JSON';
            break;
        case JSON_ERROR_CTRL_CHAR:
            echo '控制字符错误,可能是编码不对';
            break;
        case JSON_ERROR_SYNTAX:
            echo '语法错误';
            break;
        case JSON_ERROR_UTF8:
            echo '畸形的 UTF-8 字符,可能是编码问题';
            break;
        default:
            echo '未知错误';
} else {
    print_r($decoded);
?>

json_last_error() !== JSON_ERROR_NONE:

这句很实用!只要不是JSON_ERROR_NONE,那么一定是检测错误!

示例解析:

$invalidJson 是一个无效的 JSON 字符串,因为键名没有用双引号包裹。当使用 json_decode() 对其进行解码时,会发生错误,然后通过 json_last_error() 来检查错误类型,并输出相应的错误信息。