Objek PHP kepada objek tatasusunan rentetan json

WBOY
Lepaskan: 2023-05-19 21:10:06
asal
787 orang telah melayarinya

Dalam pembangunan PHP, menukar objek kepada rentetan JSON atau objek tatasusunan JSON ialah tugas yang sangat biasa. Kedua-dua rentetan JSON dan objek tatasusunan JSON ialah format pertukaran data standard yang membenarkan pertukaran data antara platform dan bahasa pengaturcaraan yang berbeza dan sangat mudah dibaca dan dihuraikan.

Artikel ini akan memperkenalkan cara menukar objek kepada rentetan JSON atau objek tatasusunan JSON dalam PHP. Kami akan menerangkan proses ini melalui contoh dan membincangkan beberapa isu biasa yang berkaitan dengan proses ini.

Bantah kepada rentetan JSON

Dalam PHP, anda boleh menukar objek kepada rentetan JSON melalui fungsi json_encode terbina dalam. Fungsi ini menerima objek sebagai hujah dan mengembalikan perwakilan rentetan JSONnya. Berikut ialah contoh:

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('Tom', 27);
$jsonString = json_encode($person);

echo $jsonString;
Salin selepas log masuk

Jalankan kod di atas, anda dapat melihat bahawa outputnya ialah:

{"name":"Tom","age":27}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Anda boleh melihat bahawa objek $person berjaya ditukar menjadi rentetan JSON. Dalam rentetan JSON, setiap sifat dalam objek ditukar menjadi pasangan nilai kunci dan kunci menggunakan nama harta tersebut.

Perlu diambil perhatian bahawa jika sifat itu peribadi atau dilindungi, fungsi json_encode tidak akan dapat mengaksesnya. Jika anda perlu memasukkan atribut ini dalam rentetan JSON, anda boleh menentukan fungsi toArray dalam kelas untuk menukar atribut yang perlu dieksport ke dalam tatasusunan bersekutu, dan kemudian hantar tatasusunan ini kepada fungsi json_encode.

class Person {
    private $name;
    private $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function toArray() {
        return array(
            'name' => $this->name,
            'age' => $this->age
        );
    }
}

$person = new Person('Tom', 27);
$jsonString = json_encode($person->toArray());

echo $jsonString;
Salin selepas log masuk

Jalankan kod di atas dan anda boleh melihat bahawa output masih:

{"name":"Tom","age":27}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Objek kepada objek tatasusunan JSON

Selain menukar objek kepada JSON Selain rentetan, anda juga boleh menukarnya menjadi objek tatasusunan JSON. Apabila menukar objek kepada objek tatasusunan JSON, setiap sifat ditukar kepada pasangan nilai kunci dan kunci menggunakan nama harta tersebut.

Dalam PHP, proses menukar objek kepada objek tatasusunan JSON boleh dicapai dengan menukar objek kepada tatasusunan dan kemudian menghantar tatasusunan kepada fungsi json_encode. Berikut ialah contoh:

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('Tom', 27);
$jsonArray = json_encode((array)$person);

echo $jsonArray;
Salin selepas log masuk

Jalankan kod di atas dan anda boleh melihat bahawa outputnya ialah:

{"name":"Tom","age":27}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Anda boleh melihat bahawa objek $person berjaya ditukar menjadi objek tatasusunan JSON. Dalam objek tatasusunan JSON, setiap sifat dalam objek ditukar menjadi pasangan nilai kunci dan kunci menggunakan nama harta tersebut.

Perlu diambil perhatian bahawa apabila menukar objek kepada tatasusunan, sifat peribadi atau dilindungi akan diabaikan. Jika anda perlu memasukkannya dalam objek tatasusunan JSON, anda boleh melakukannya dengan mentakrifkan fungsi toArray dalam kelas, sama seperti proses menukar objek kepada rentetan JSON.

Soalan Lazim

  1. Bagaimana untuk menangani objek bersarang dalam objek?

Jika objek mengandungi objek lain, anda boleh menukar secara rekursif objek ini kepada tatasusunan atau tatasusunan bersekutu dalam fungsi toArray, dan kemudian gabungkan tatasusunan ini menjadi tatasusunan besar. Apabila menghantar tatasusunan besar ini kepada fungsi json_encode, ia akan menukar tatasusunan ini secara rekursif kepada objek JSON atau objek tatasusunan JSON.

  1. Bagaimana untuk menangani objek yang atributnya ialah tatasusunan atau sumber?

Jika objek mengandungi atribut yang merupakan tatasusunan atau sumber, atribut ini tidak boleh ditukar terus kepada objek JSON atau objek tatasusunan JSON. Dalam proses menukar objek kepada tatasusunan, anda boleh memanggil fungsi json_encode pada atribut ini untuk menukarnya menjadi objek JSON atau objek tatasusunan JSON, dan kemudian menggabungkannya menjadi tatasusunan besar sebagai satu elemen.

  1. Bagaimana untuk menangani objek yang mengandungi bahasa Cina?

Jika objek mengandungi rentetan Cina, fungsi json_encode akan mengekodnya ke dalam pengekodan Unikod secara lalai. Jika anda perlu mengekodnya ke dalam rentetan UTF-8, anda boleh menghantar pilihan JSON_UNESCAPED_UNICODE ke fungsi json_encode.

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('李四', 27);
$jsonString = json_encode($person->toArray(), JSON_UNESCAPED_UNICODE);

echo $jsonString;
Salin selepas log masuk

Jalankan kod di atas dan anda boleh melihat bahawa outputnya ialah:

{"name":"李四","age":27}
Salin selepas log masuk

Dalam pembangunan PHP, menukar objek kepada rentetan JSON atau objek tatasusunan JSON ialah tugas asas. Artikel ini memperkenalkan cara untuk melaksanakan proses ini dalam PHP dan membincangkan beberapa isu biasa yang berkaitan dengan proses ini. Saya harap ia akan membantu pembangun PHP.

Atas ialah kandungan terperinci Objek PHP kepada objek tatasusunan rentetan json. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan