Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengendalikan Data JSON Buruk dengan Berkesan dengan `json_decode()` PHP?

Bagaimanakah Saya Boleh Mengendalikan Data JSON Buruk dengan Berkesan dengan `json_decode()` PHP?

Susan Sarandon
Susan Sarandonasal
2024-11-18 18:59:02832semak imbas

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

Mengendalikan Data JSON Buruk dengan json_decode() dalam PHP

Apabila berurusan dengan data JSON menggunakan json_decode(), adalah penting untuk mengendalikan data tidak sah dengan berkesan. Walaupun skrip yang disediakan boleh mengesan JSON buruk untuk rentetan seperti { bar: "baz" }, ia gagal mengendalikan data bukan rentetan seperti "data tidak sah."

Memahami json_decode()

Untuk menangani isu ini, adalah penting untuk memahami json_decode():

  • Ia mengembalikan data yang dinyahkod atau null sekiranya berlaku ralat.
  • Ia juga boleh mengembalikan null apabila rentetan JSON mengandungi null.
  • Ia menimbulkan amaran untuk ralat.

Mencegah Amaran dengan @ Operator

Untuk menyekat amaran, satu pilihan ialah menggunakan operator @:

$data = @json_decode($_POST);

Pendekatan ini menyenyapkan amaran, tetapi memerlukan semakan tambahan untuk mengendalikan ralat dan nilai nol:

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

Pengendalian Ralat Tersuai

Pilihan lain ialah membuat pengendalian ralat tersuai skrip:

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!";
}

Skrip ini menyediakan mesej ralat terperinci dan mengendalikan pelbagai ralat penghuraian JSON.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Data JSON Buruk dengan Berkesan dengan `json_decode()` PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn