」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 PHP 的 json_decode() 有效處理錯誤的 JSON 資料?

如何使用 PHP 的 json_decode() 有效處理錯誤的 JSON 資料?

發佈於2024-11-25
瀏覽:333

How Can I Effectively Handle Bad JSON Data with PHP\'s `json_decode()`?

在PHP 中使用json_decode() 處理錯誤的JSON 資料

使用json_decode() 處理JSON 資料時,處理無效資料至關]

使用json_decode() 處理JSON 資料時,處理無效資料至關]

使用json_decode() 處理JSON 資料時,處理無效資料至關重要有效地。雖然提供的腳本可以檢測到諸如 { bar: "baz" } 之類的字串的錯誤 JSON,但它無法處理諸如“無效資料”之類的非字串資料。

理解json_decode()

    要解決這個問題,有必要了解json_decode():
  • 它返回解碼後的資料發生錯誤時傳回null。
  • 當 JSON 字串包含 null 時,它也可以傳回 null。
它會引發錯誤警告。

使用 @ 運算子抑制警告

$data = @json_decode($_POST);

$data = @json_decode($_POST);

if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
    echo "Incorrect data";
}

if ($資料=== null && json_last_error() !== JSON_ERROR_NONE) { echo "資料錯誤"; }

自訂錯誤處理

function handle_json_error() {
    $error = json_last_error();
    switch ($error) {
        case JSON_ERROR_NONE:
            return true;
        case JSON_ERROR_DEPTH:
            echo "Maximum depth exceeded";
            break;
        case JSON_ERROR_STATE_MISMATCH:
            echo "Invalid or malformed JSON";
            break;
        case JSON_ERROR_CTRL_CHAR:
            echo "Control character error";
            break;
        case JSON_ERROR_SYNTAX:
            echo "Syntax error";
            break;
        case JSON_ERROR_UTF8:
            echo "Malformed UTF-8 characters";
            break;
        default:
            echo "Unknown error";
    }
    return false;
}

if (!handle_json_error()) {
    echo "Bad JSON data!";
}

function handle_json_error() { $錯誤= json_last_error(); 開關($錯誤){ 案例 JSON_ERROR_NONE: 返回真; 案例 JSON_ERROR_DEPTH: echo「超出最大深度」; 休息; 案例 JSON_ERROR_STATE_MISMATCH: echo "無效或格式錯誤的 JSON"; 休息; 案例 JSON_ERROR_CTRL_CHAR: echo "控製字元錯誤"; 休息; 案例 JSON_ERROR_SYNTAX: echo "語法錯誤"; 休息; 案例 JSON_ERROR_UTF8: echo "格式錯誤的 UTF-8 字元"; 休息; 預設: echo "未知錯誤"; } 返回假; } 如果(!handle_json_error()){ echo "JSON 資料錯誤!"; }

此腳本提供詳細的錯誤訊息並處理各種 JSON 解析錯誤。 How Can I Effectively Handle Bad JSON Data with PHP\'s `json_decode()`?

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3