美文网首页
php json_decode 报错处理

php json_decode 报错处理

作者: 云龙789 | 来源:发表于2019-03-22 18:28 被阅读0次
    $result = json_decode($string, true);
    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - No errors';
            break;
        case JSON_ERROR_DEPTH:
            echo ' - Maximum stack depth exceeded';
            break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Underflow or the modes mismatch';
            break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Unexpected control character found';
            break;
        case JSON_ERROR_SYNTAX:
            echo ' - Syntax error, malformed JSON';
            break;
        case JSON_ERROR_UTF8:
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
            break;
        default:
            echo ' - Unknown error';
            break;
    }
    

    json_decode 报错的原因可能不尽相同,但是我遇到的解决方案就是文章顶部推荐的博客那种解决方式

    BOM头是UTF-8来告诉编辑器:我是UTF8编码。它的编码是\xEF\xBB\xBF
    但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题
    比如今天遇到的问题,json_decode,当解码的string有BOM头的时候json_decode就解析失败,返回NULL。(为什么不自动检测并去除BOM头呢。。。小吐槽)

    $result = trim($result, "\xEF\xBB\xBF");
    print_r(json_decode($result, true));
    exit;
    

    或者

    $result = @iconv("UTF-8", "GBK//IGNORE", $result);
    $result = @iconv("GBK", "UTF-8//IGNORE", $result);
     
    print_r(json_decode($result, true));
    exit;
    

    相关文章

      网友评论

          本文标题:php json_decode 报错处理

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