Tukar data php json kepada tatasusunan
Dalam PHP, kadangkala kita perlu menukar data JSON kepada format tatasusunan untuk diproses. Pada masa ini, kita boleh menggunakan fungsi json_decode() untuk menukar data JSON kepada tatasusunan PHP. Artikel ini akan memperkenalkan cara menggunakan fungsi json_decode() untuk menukar data JSON kepada tatasusunan dan menjawab beberapa soalan biasa.
JSON ialah format pertukaran data ringan yang digunakan secara meluas untuk menghantar data kerana kesederhanaan, kemudahan penggunaan dan kemudahan pengembangannya. PHP ialah bahasa pengaturcaraan yang ditaip lemah yang cekap, pantas, mudah dipelajari dan digunakan. Memandangkan format JSON disokong secara asli dalam PHP, adalah sangat mudah untuk menggunakan PHP untuk memproses data JSON semasa pembangunan.
Gunakan fungsi json_decode() untuk menukar data JSON kepada tatasusunan
Berikut ialah kod sampel untuk menukar data JSON kepada tatasusunan:
$json = '{"name":"Tom","age":"20","sex":"male"}'; $arr = json_decode($json, true); var_dump($arr);
Hasil output:
array(3) { ["name"]=> string(3) "Tom" ["age"]=> string(2) "20" ["sex"]=> string(4) "male" }
Seperti yang anda lihat, fungsi json_decode() menukar data JSON kepada tatasusunan PHP. Parameter kedua fungsi ini boleh ditetapkan kepada benar atau palsu, yang mengembalikan tatasusunan bersekutu apabila ditetapkan kepada benar, atau objek apabila ditetapkan kepada palsu atau tidak ditetapkan.
Berikut ialah kod sampel untuk mengembalikan objek:
$json = '{"name":"Tom","age":"20","sex":"male"}'; $obj = json_decode($json); var_dump($obj);
Hasil output:
object(stdClass)#1 (3) { ["name"]=> string(3) "Tom" ["age"]=> string(2) "20" ["sex"]=> string(4) "male" }
Apabila menghuraikan rentetan JSON, jika didapati bahawa pengekodan aksara tidak UTF-8, ia perlu ditukar kepada pengekodan UTF-8:
$json = '{"name":"Tom","age":"20","sex":"male"}'; $json = mb_convert_encoding($json, 'UTF-8', 'auto'); // 将编码转换为 UTF-8 $arr = json_decode($json, true); var_dump($arr);
Soalan Lazim
1 Bagaimana untuk menangani ralat penghuraian JSON?
Semasa proses memproses data JSON, ralat penghuraian mungkin berlaku disebabkan masalah dengan format data JSON atau format pengekodan. Pada ketika ini, anda boleh menggunakan fungsi json_last_error() untuk mendapatkan punca ralat penghuraian. Fungsi ini mengembalikan nombor yang mewakili jenis ralat penghuraian JSON. Berikut ialah takrifan jenis ralat:
- JSON_ERROR_NONE: Tiada ralat, penghuraian berjaya.
- JSON_ERROR_DEPTH: Data JSON terlalu kompleks dan melebihi kedalaman maksimum yang ditetapkan.
- JSON_ERROR_STATE_MISMATCH: Format data JSON tidak betul.
- JSON_ERROR_CTRL_CHAR: Terdapat aksara kawalan yang salah.
- JSON_ERROR_SYNTAX: Terdapat ralat sintaks dalam data JSON.
- JSON_ERROR_UTF8: Data JSON tidak dikodkan UTF-8.
Gunakan kod berikut untuk mendapatkan punca ralat penghuraian:
$json = '{"name": "Tom""age": "20"}'; // 注意,这里有错误 $arr = json_decode($json, true); if (json_last_error() !== JSON_ERROR_NONE) { switch (json_last_error()) { case JSON_ERROR_DEPTH: echo 'JSON 数据过于复杂,超出了设置的最大深度'; break; case JSON_ERROR_STATE_MISMATCH: echo 'JSON 数据格式不正确'; break; case JSON_ERROR_CTRL_CHAR: echo 'JSON 数据中有不正确的控制字符'; break; case JSON_ERROR_SYNTAX: echo 'JSON 数据存在语法错误'; break; case JSON_ERROR_UTF8: echo 'JSON 数据不是 UTF-8 编码'; break; default: echo '未知的 JSON 解析错误'; break; } } var_dump($arr);
Hasil keluaran:
JSON 数据存在语法错误 NULL
Seperti yang ditunjukkan di atas, fungsi json_last_error() boleh dengan mudah dapatkan ralat penghuraian untuk mencari masalah dengan cepat.
2. Bagaimana untuk menangani masalah format JSON yang tidak standard?
Dalam penggunaan sebenar, sesetengah data JSON mungkin tidak berada dalam format yang paling piawai, seperti penggunaan koma selepas nilai atribut terakhir. Jika anda menggunakan fungsi json_decode() untuk menghuraikan data JSON ini, NULL akan dikembalikan. Pada ketika ini, kami boleh menggunakan perpustakaan pihak ketiga untuk pemprosesan.
Berikut ialah contoh kod yang menggunakan perpustakaan json5 untuk memproses format bukan kanonik JSON:
// 首先,安装 json5 库 // composer require symfony/polyfill-mbstring // composer require webonyx/json5 $json = '{"name": "Tom", "age": 20, }'; // 注意,这里有错误 use Json5Parser; $parser = new Parser(); $arr = $parser->decode($json); var_dump($arr);
Hasil output:
array(2) { ["name"]=> string(3) "Tom" ["age"]=> int(20) }
Seperti yang ditunjukkan di atas, ia boleh menjadi mudah diproses menggunakan pustaka json5 Isu dengan format bukan standard JSON.
3. Bagaimana untuk menangani masalah akses merentas domain data JSON?
Masalah dengan akses merentas domain data JSON ialah atas sebab keselamatan, penyemak imbas melarang bahagian hadapan daripada mengakses sumber dalam domain lain merentas permintaan ajax dalam permintaan ajax. Pada masa ini, kita perlu membuat beberapa tetapan.
Berikut ialah contoh kod untuk menggunakan PHP untuk mencapai akses merentas domain:
header('Access-Control-Allow-Origin: *'); // 允许所有域名访问 header('Content-Type: application/json'); $json = '{"name": "Tom", "age": 20, "sex": "male"}'; echo $json;
Seperti yang ditunjukkan di atas, menetapkan pengepala Access-Control-Allow-Origin dalam PHP membenarkan nama domain lain untuk menjadi akses merentas domain.
Kesimpulan
Setakat ini, kami telah memperkenalkan cara menggunakan fungsi json_decode() untuk menukar data JSON kepada tatasusunan, dan cara menyelesaikan beberapa masalah biasa yang dihadapi dalam memproses data JSON. Saya harap artikel ini dapat membantu semua orang.
Atas ialah kandungan terperinci Tukar data php json kepada tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kompilasi JIT Php 8 meningkatkan prestasi dengan menyusun kod yang sering dilaksanakan ke dalam kod mesin, memberi manfaat kepada aplikasi dengan pengiraan berat dan mengurangkan masa pelaksanaan.

Artikel ini membincangkan mendapatkan muat naik fail PHP untuk mengelakkan kelemahan seperti suntikan kod. Ia memberi tumpuan kepada pengesahan jenis fail, penyimpanan selamat, dan pengendalian ralat untuk meningkatkan keselamatan aplikasi.

Artikel ini membincangkan kelemahan OWASP 10 dalam strategi PHP dan mitigasi. Isu -isu utama termasuk suntikan, pengesahan yang rosak, dan XSS, dengan alat yang disyorkan untuk memantau dan mendapatkan aplikasi PHP.

Artikel ini membincangkan penyulitan simetri dan asimetrik dalam PHP, membandingkan kesesuaian, prestasi, dan perbezaan keselamatan mereka. Penyulitan simetri lebih cepat dan sesuai untuk data pukal, manakala asimetrik digunakan untuk pertukaran utama yang selamat.

Artikel membincangkan mendapatkan data dari pangkalan data menggunakan PHP, meliputi langkah, langkah keselamatan, teknik pengoptimuman, dan kesilapan umum dengan penyelesaian.

Artikel ini membincangkan pelaksanaan pengesahan dan kebenaran yang mantap dalam PHP untuk mencegah akses yang tidak dibenarkan, memperincikan amalan terbaik dan mengesyorkan alat peningkatan keselamatan.

Kenyataan yang disediakan dalam PHP meningkatkan keselamatan pangkalan data dan kecekapan dengan mencegah suntikan SQL dan meningkatkan prestasi pertanyaan melalui kompilasi dan penggunaan semula.

Artikel ini membincangkan strategi untuk melaksanakan kadar API yang mengehadkan PHP, termasuk algoritma seperti baldi token dan baldi bocor, dan menggunakan perpustakaan seperti simfoni/kadar-limiter. Ia juga meliputi pemantauan, had kadar penyesuaian secara dinamik, dan tangan
