Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengesan Data JSON Cacat dalam PHP Menggunakan `json_decode()`?

Bagaimana untuk Mengesan Data JSON Cacat dalam PHP Menggunakan `json_decode()`?

Linda Hamilton
Linda Hamiltonasal
2024-11-19 14:05:02307semak imbas

How to Reliably Detect Malformed JSON Data in PHP Using `json_decode()`?

Cara Mengesan Data JSON Cacat Menggunakan Penyahkod JSON dalam PHP

Apabila cuba menghuraikan data JSON menggunakan json_decode(), pengendalian format tidak sah adalah penting untuk memastikan integriti data. Walaupun fungsi ini secara amnya berkesan, ia mungkin menunjukkan ketidakkonsistenan apabila mengendalikan jenis input tertentu.

Senario Masalah

Pertimbangkan senario berikut:

if(!json_decode($_POST)) {
  echo "bad json data!";
  exit;
}

Skrip ini bertujuan untuk mengesan dan mengendalikan data JSON yang tidak sah. Walau bagaimanapun, apabila $_POST mengandungi format JSON yang sah (cth., { bar: "baz" }), json_decode() menguruskan ralat dengan betul, memaparkan "data json buruk!". Walau bagaimanapun, apabila $_POST ditetapkan kepada format yang tidak sah (cth., "data tidak sah"), amaran yang tidak dijangka dibangkitkan, diikuti dengan "data json buruk!":

Warning: json_decode() expects parameter 1 to be string, array given in ...
bad json data!

Pengesanan Tersuai atau Penyelesaian Alternatif?

Untuk menangani isu ini, pembangun boleh mempertimbangkan untuk menulis skrip tersuai untuk mengesan data JSON yang sah atau meneroka pilihan lain yang tersedia.

Penyelesaian Menggunakan Ciri Nyahkod JSON:

Nyahkod JSON mempunyai beberapa ciri utama untuk dipertimbangkan:

  • Ia mengembalikan yang dihuraikan data atau null sekiranya berlaku ralat.
  • Ia juga mungkin mengembalikan null untuk kes yang sah di mana rentetan JSON mengandungi null.
  • Ia menimbulkan amaran untuk ralat tertentu.

Untuk mengelakkan isu amaran, pengendali @ boleh digunakan (walaupun penggunaannya tidak digalakkan kerana kemungkinan kesukaran penyahpepijatan). Operator ini menyekat amaran sambil masih membenarkan skrip meneruskan pelaksanaan.

$_POST = array('bad data');
$data = @json_decode($_POST);

Selepas menekan amaran, adalah perlu untuk menyemak sama ada $data adalah batal. Untuk membezakan antara format yang tidak sah dan nilai nol yang sah, json_last_error() boleh digunakan. Fungsi ini mengembalikan ralat penghuraian JSON yang terbaharu, jika ada.

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

Dengan menggabungkan teknik ini, kami boleh mengesan dan mengendalikan data JSON yang tidak sah dalam PHP dengan berkesan menggunakan json_decode().

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Data JSON Cacat dalam PHP Menggunakan `json_decode()`?. 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