美文网首页
判断是否合法json串

判断是否合法json串

作者: pengtoxen | 来源:发表于2018-07-31 14:36 被阅读0次

对接三方API的时候,经常会遇到接收的json串是非法的而导致程序出错.这种情况有什么有效的方法来避免呢?
我们知道PHP的内置函数json_decode()在解析json字符串的时候,如果失败返回空,内置函数json_last_error()该函数见名思意返回 JSON 编码解码时最后发生的错误.

function isJson($string)
{
  json_decode($string);
  switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - 没有错误发生';
        break;
        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;
        case JSON_ERROR_UNSUPPORTED_TYPE:
            echo ' - 指定的类型,值无法编码';
        break;
        case JSON_ERROR_INVALID_PROPERTY_NAME:
            echo ' - 指定的属性名无法编码';
        break;
        case JSON_ERROR_UTF16:
            echo ' - 畸形的 UTF-16 字符,可能因为字符编码不正确';
        break;
        default:
            echo ' - Unknown error';
        break;
    }
}

这样我们在对接三方API的时候先判断接收的是否是合法json串再做逻辑处理,可以有效避免非法json串带来的问题.

相关文章

网友评论

      本文标题:判断是否合法json串

      本文链接:https://www.haomeiwen.com/subject/ijchvftx.html