Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar tatasusunan php kepada json dan mengalih keluar petikan berganda

Bagaimana untuk menukar tatasusunan php kepada json dan mengalih keluar petikan berganda

PHPz
PHPzasal
2023-04-27 09:06:341351semak imbas

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!

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