Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah `json_encode` menambahkan garis miring ke belakang yang tidak diingini pada output JSON saya?

Mengapakah `json_encode` menambahkan garis miring ke belakang yang tidak diingini pada output JSON saya?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 00:41:01884semak imbas

Why does `json_encode` add unwanted backslashes to my JSON output?

JSON Conundrum: Merungkai Anomali Sentak Belakang dalam json_encode

Dalam bidang pengekodan data JSON, fungsi json_encode telah lama menjadi alat yang dipercayai. Walau bagaimanapun, pertemuan baru-baru ini telah menimbulkan persoalan yang membingungkan: mengapa json_encode menambah garis miring ke belakang yang tidak diingini?

Untuk menyelidiki enigma ini, mari kita periksa kod yang disediakan:

print_r($result);
echo json_encode($result);

Arahan print_r memaparkan tatasusunan bersekutu seperti yang diharapkan. Apabila json_encode digunakan, ia menukar tatasusunan kepada JSON, yang kelihatan sah. Walau bagaimanapun, selepas pemeriksaan lanjut, garis miring tersembunyi muncul.

{
    "logo_url":"http:\/\/mysite.com\/uploads\/gallery\/7f\/3b\/f65ab8165d_logo.jpeg",
    "img_id":"54",
    "feedback":{"message":"File uploaded","success":true}
}

Mengapakah garis miring luar ini? Penyahpepijatan selanjutnya mendedahkan kelainan dalam kisah itu. Anomali tidak berlaku dalam json_encode itu sendiri, tetapi dalam panggilan parseJSON berikutnya. Meneliti data JavaScript menggunakan data.toSource() menemui rentetan yang tidak mematuhi JSON:

({response:"{\"logo_url\":\"http:\/\/storelocator.com\/wp-content\/uploads\/gallery\/7f\/3b\/71b9520cfc91a90afbdbbfc9d2b2239b_logo.jpeg\",\"img_id\":\"62\",\"feedback\":{\"message\":\"File uploaded\",\"success\":true}}", status:200})

Penyelesaian:

Kunci untuk menyelesaikan isu ini terletak dalam menentukan pilihan "JSON_UNESCAPED_SLASHES" untuk json_encode. Diperkenalkan dalam PHP versi 5.4, pilihan ini secara berkesan menghalang fungsi daripada menambahkan garis miring ke belakang kepada garis miring ke hadapan.

json_encode($array,JSON_UNESCAPED_SLASHES);

Berbekalkan pengetahuan ini, misteri garis miring ke belakang yang tidak diingini diselesaikan, membolehkan pengekodan JSON yang lancar tanpa gangguan escapist !

Atas ialah kandungan terperinci Mengapakah `json_encode` menambahkan garis miring ke belakang yang tidak diingini pada output JSON saya?. 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