Dalam PHP, menukar tatasusunan kepada format JSON boleh dicapai melalui fungsi json_encode
, yang menerima parameter $value
dan menukarnya kepada rentetan dalam format JSON. Walau bagaimanapun, secara lalai, fungsi json_encode
akan membalut nama sifat objek dalam petikan berganda apabila menjana rentetan JSON, yang akan menjejaskan penggunaan beberapa rangka kerja bahagian hadapan. Jadi, bagaimana untuk membuat fungsi json_encode
mengalih keluar petikan berganda dalam rentetan JSON yang dihasilkan?
Pertama, mari kita lihat format rentetan JSON yang dijana oleh fungsi json_encode
secara lalai:
$arr = array('name' => '张三', 'age' => 18, 'gender' => 'male'); $jsonStr = json_encode($arr); echo $jsonStr;
Keluaran kod di atas ialah:
{"name":"张三","age":18,"gender":"male"}
Sebagaimana anda boleh lihat, JSON Nama atribut dalam rentetan dibalut dengan petikan berganda.
Jika kita ingin mengalih keluar petikan berganda, kita boleh menggunakan mekanisme pantulan PHP. Jika pembaca tidak biasa dengan refleksi, anda boleh mempelajarinya selepas membaca artikel ini.
Berikut ialah contoh mengalih keluar petikan berganda daripada nama atribut dalam rentetan JSON:
class JsonWithoutQuotes { public function __construct($data) { $this->originalData = $data; } public function getJson() { $data = $this->originalData; $jsonData = json_encode($data); $jsonData = preg_replace_callback( '/"(.*?)":/is', function($matches) { $match = $matches[1]; return is_string($match) ? $match.":" : $match; }, $jsonData); return $jsonData; } }
Dalam kod di atas, kami menggunakan kelas tersuai JsonWithoutQuotes
, yang menerima Ambil tatasusunan sebagai parameter dan simpan dalam atribut $originalData
. Kaedah getJson
digunakan untuk menukar tatasusunan dalam $originalData
kepada rentetan JSON tanpa petikan berganda:
Pertama, kami memanggil fungsi json_encode
untuk menukar data asal kepada rentetan JSON, dan kemudian gunakan PHP Kaedah preg_replace_callback
enjin ungkapan biasa terbina dalam menggantikan nama atribut dalam rentetan JSON dengan rentetan yang dikembalikan dalam fungsi panggil balik. Fungsi fungsi panggil balik adalah untuk menentukan sama ada rentetan yang dipadankan adalah daripada jenis rentetan Jika ya, kembalikan rentetan tanpa petikan berganda Jika tidak, kembalikan rentetan itu.
$arr = array('name' => '张三', 'age' => 18, 'gender' => 'male'); $jsonStr = (new JsonWithoutQuotes($arr))->getJson(); echo $jsonStr;
Kesan larian sebenar:
{name:"张三",age:18,gender:"male"}
Seperti yang anda lihat, petikan berganda telah dialih keluar daripada nama atribut dalam rentetan JSON.
Ringkasan:
Sangat mudah untuk menggunakan fungsi json_encode
PHP sendiri untuk menukar tatasusunan kepada rentetan JSON. Walau bagaimanapun, dalam beberapa kes, nama harta dalam rentetan JSON perlu dilucutkan petikan berganda. Pada masa ini, kita boleh menggunakan mekanisme refleksi PHP untuk mencapai matlamat ini.
Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan php kepada json dan mengalih keluar petikan berganda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!