Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah `json_encode` menambah garis miring ke belakang dan bagaimana saya boleh menghalangnya?

Mengapakah `json_encode` menambah garis miring ke belakang dan bagaimana saya boleh menghalangnya?

Patricia Arquette
Patricia Arquetteasal
2024-11-12 04:36:01362semak imbas

Why does `json_encode` add backslashes and how can I prevent it?

Json_encode Menambah Backslashes: Membongkar Misteri

Dalam bidang JavaScript, json_encode telah lama menjadi sekutu yang dipercayai untuk pengekodan data ke dalam format JSON . Walau bagaimanapun, sesetengah pembangun telah menemui fenomena yang tidak dijangka di mana json_encode memperkenalkan garis miring ke belakang ke dalam output.

Teka-teki Memuat Naik

Satu kejadian sedemikian berlaku apabila menggunakan json_encode untuk mengembalikan data JSON selepas muat naik fail. Pertimbangkan kod berikut:

print_r($result); // Associative array

$encoded_result = json_encode($result); // Valid JSON

echo $encoded_result;

The Unexplained Backslashes

Mengejutkan pembangun, JSON yang terhasil termasuk backslash yang tidak diingini:

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

Menunjukkan dengan tepat Puncanya

Siasatan awal mendedahkan bahawa garis miring ke belakang ditambah di suatu tempat antara json_encode dan penghuraian data JSON penyemak imbas.

alert(data.toSource()); // Result: invalid JSON with added "status:200"

Pembolehubah Tersembunyi

Peperiksaan yang lebih dekat menemui punca yang tidak dijangka: Peristiwa pengikat Plupload.

uploader.bind('FileUploaded', function(up, file, data) {
  alert(data.toSource());
  $('#' + file.id + " b").html("100%");
});

Plupload, pustaka muat naik fail yang popular, nampaknya memanipulasi data yang dikembalikan, menambah sifat "status:200" dan mengekod garis miring.

Penyelesaian: Melarikan Diri daripada Tebasan

Untuk menggagalkan perkara yang tidak diingini garis miring ke belakang, kod tersebut telah diubah suai untuk memasukkan pilihan "JSON_UNESCAPED_SLASHES" dalam panggilan fungsi json_encode:

$encoded_result = json_encode($result, JSON_UNESCAPED_SLASHES);

Pilihan ini secara berkesan melumpuhkan pelepasan garis miring ke hadapan, menghasilkan output JSON yang diingini:

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

Membuka tabir Kebenaran

Sebagai kesimpulan, penambahan garis miring ke belakang dalam output json_encode telah dikaitkan dengan manipulasi data yang tidak disengajakan oleh peristiwa Plupload bind. Dengan memasukkan pilihan "JSON_UNESCAPED_SLASHES", pembangun boleh menghalang watak melarikan diri yang tidak diingini ini daripada mengganggu data JSON mereka.

Atas ialah kandungan terperinci Mengapakah `json_encode` menambah garis miring ke belakang dan bagaimana saya boleh menghalangnya?. 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