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
Lepaskan: 2024-11-18 18:59:02
asal
863 orang telah melayarinya

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);
Salin selepas log masuk

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";
}
Salin selepas log masuk

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!";
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan