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
Lepaskan: 2024-11-12 04:36:01
asal
404 orang telah melayarinya

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

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

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

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

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

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

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 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