Dalam proses menukar tatasusunan PHP kepada data JSON, kadangkala rentetan JSON mengandungi petikan berganda. Keadaan ini sangat biasa dalam pembangunan sebenar, dan penyelesaiannya sangat mudah.
Secara amnya, menukar tatasusunan PHP kepada rentetan JSON boleh dilakukan menggunakan fungsi terbina dalam PHP json_encode()
. Fungsi ini menukar tatasusunan PHP kepada rentetan JSON. Sebagai contoh, kod berikut menukar tatasusunan PHP yang mengandungi beberapa data kepada rentetan JSON:
$data = array( 'name' => 'John', 'age' => 30, 'gender' => 'male' ); $json_str = json_encode($data); echo $json_str;
Output kod ini ialah:
{"name":"John","age":30,"gender":"male"}
Dalam kod di atas, tukarkan Tatasusunan PHP yang mengandungi tiga nilai medan name
, age
dan gender
ke dalam rentetan JSON.
Walau bagaimanapun, kadangkala nilai dalam tatasusunan PHP kami sendiri mengandungi petikan berganda, yang menyebabkan masalah apabila menggunakan fungsi json_encode()
untuk menukarnya kepada rentetan JSON.
Sebagai contoh, tatasusunan PHP berikut mengandungi nilai dengan petikan berganda:
$data = array( 'name' => 'John "The Rock" Johnson', 'age' => 30, 'gender' => 'male' );
Jika anda menggunakan fungsi json_encode()
terus untuk menukar kepada rentetan JSON:
$json_str = json_encode($data); echo $json_str;
Hasil output ialah:
{"name":"John "The Rock" Johnson","age":30,"gender":"male"}
Kami akan mendapati bahawa nilai medan name
dalam rentetan JSON tidak ditukar dengan betul kepada rentetan dalam petikan berganda, tetapi dalam yang pertama Petikan berganda dipotong.
Untuk menyelesaikan masalah ini, kita perlu menambah parameter json_encode()
apabila menggunakan fungsi JSON_UNESCAPED_SLASHES
untuk menukarnya menjadi rentetan JSON, contohnya:
$json_str = json_encode($data, JSON_UNESCAPED_SLASHES); echo $json_str;
Dalam dengan cara ini, hasil output akan betul-betul menukar nilai medan name
kepada rentetan dalam petikan berganda:
{"name":"John \"The Rock\" Johnson","age":30,"gender":"male"}
Perhatikan bahawa nilai medan name
dalam hasil output telah disertakan dengan betul dalam petikan berganda dan petikan berganda Dalaman juga dilepaskan ke dalam "
. Dengan cara ini, rentetan JSON yang ditukar boleh dihuraikan dengan betul.
Selain parameter JSON_UNESCAPED_SLASHES
, terdapat beberapa parameter lain yang boleh digunakan untuk mengawal hasil penukaran fungsi json_encode()
. Jika anda perlu mengetahui lebih lanjut, anda boleh merujuk kepada penerangan fungsi json_encode()
dalam dokumentasi rasmi PHP.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah petikan berganda apabila menukar tatasusunan php ke json. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!