Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Adakah `json_decode()` Mengembalikan NULL untuk JSON yang Sah?

Mengapa Adakah `json_decode()` Mengembalikan NULL untuk JSON yang Sah?

Susan Sarandon
Susan Sarandonasal
2024-11-27 10:23:14406semak imbas

Why Does `json_decode()` Return NULL for Valid JSON?

json_decode() Mengembalikan NULL untuk JSON yang Sah: Penyelesaian Masalah

Apabila cuba menyahkod data JSON menggunakan json_decode(), pembangun mungkin menghadapi keadaan di mana fungsi mengembalikan NULL walaupun JSON kelihatan sah. Isu ini boleh menjadi sangat membingungkan apabila JSON lulus pengesahan terhadap pengesah JSON dalam talian. Untuk memahami sebab ini berlaku dan menyelesaikannya dengan berkesan, mari kita mendalami masalah dan penyelesaiannya.

Aksara Tidak Sah dalam Rentetan JSON

Satu punca biasa isu ini ialah kehadiran aksara tidak sah dalam rentetan JSON. Walaupun kebanyakan pengesah JSON mengabaikannya, fungsi json_decode() PHP boleh ditamatkan secara tiba-tiba apabila menemui aksara sedemikian. Aksara tidak sah ini biasanya berjulat dari 0x00 hingga 0x1F dan 0x80 hingga 0xFF.

Penyelesaian: Mengalih keluar Aksara Tidak Sah

Untuk menangani isu ini, anda boleh menggunakan fungsi preg_replace() untuk mengalih keluar semua aksara yang tidak sah daripada rentetan JSON sebelum cuba menyahkodnya. Kod berikut menunjukkan cara untuk melakukan ini:

$json_string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string);

Ungkapan biasa ini mengalih keluar semua aksara antara 0x00 dan 0x1F, serta aksara antara 0x80 dan 0xFF, menapis aksara yang tidak sah dengan berkesan.

Pergaulan Sejati Tatasusunan

Isu lain yang boleh menyebabkan json_decode() mengembalikan NULL ialah apabila anda menjangkakan hasilnya ialah tatasusunan bersekutu yang benar, tetapi PHP mentafsirkannya sebagai objek. Ini boleh berlaku apabila rentetan JSON mengandungi kunci sifat yang tidak disertakan dalam petikan berganda.

Untuk memastikan bahawa hasilnya ialah tatasusunan bersekutu benar, anda boleh menggunakan parameter kedua json_decode() dan tetapkannya kepada benar . Ini akan memaksa hasilnya menjadi tatasusunan bersekutu dan bukannya objek. Berikut ialah contoh:

$json_data = json_decode($json_string, true);

Dengan menggunakan penyelesaian ini, anda boleh menyelesaikan isu json_decode() dengan berkesan mengembalikan NULL untuk data JSON yang kelihatan sah, membolehkan anda menghuraikan dan menggunakan data JSON dalam aplikasi PHP anda dengan jayanya .

Atas ialah kandungan terperinci Mengapa Adakah `json_decode()` Mengembalikan NULL untuk JSON yang Sah?. 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