Dalam pembangunan Web, teknologi JSON telah menjadi bahagian yang sangat diperlukan dan digunakan secara meluas dalam penghantaran dan penyimpanan data bahagian hadapan dan belakang. Dalam bahasa PHP, kita selalunya perlu menukar data JSON kepada tatasusunan untuk operasi dan pemprosesan. Artikel ini akan memperkenalkan anda kepada cara menukar JSON kepada tatasusunan.
1. Gunakan fungsi json_decode()
Dalam PHP, kita boleh menggunakan fungsi terbina dalam json_decode() untuk menghuraikan rentetan JSON ke dalam tatasusunan PHP. Penggunaan asas fungsi ini adalah seperti berikut:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
Antaranya, parameter $json mewakili rentetan JSON untuk dihuraikan dan $assoc mewakili sama ada untuk menukar objek yang dihuraikan kepada tatasusunan dengan nama kunci . Lalai adalah palsu $depth mewakili kedalaman parsing, lalai ialah 512, $options mewakili pilihan parsing, lalai ialah 0.
Sebagai contoh, kami mempunyai rentetan JSON berikut:
{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}
Kami boleh menukarnya menjadi tatasusunan melalui kod PHP berikut:
$json = '{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}'; $arr = json_decode($json, true); print_r($arr);
Outputnya ialah seperti berikut :
Array ( [name] => Tom [age] => 18 [hobbies] => Array ( [0] => music [1] => movies ) )
2. Mengendalikan masalah biasa dalam penukaran
Dalam aplikasi sebenar, kami mungkin menghadapi masalah bahawa beberapa rentetan JSON tidak boleh ditukar dengan betul kepada tatasusunan dan penyelesaian mereka akan diterangkan.
Sebagai contoh, apabila rentetan JSON mengandungi aksara khas seperti petikan tunggal atau petikan berganda, program akan melaporkan ralat atau penukaran akan gagal. Pada masa ini, kita boleh mengelakkan situasi ini dengan melarikan diri dari rentetan. PHP menyediakan fungsi terbina dalam addslashes() untuk melarikan diri.
Contohnya:
$json = '{"name": "Tom\'s book", "page": "100\""}'; $json = addslashes($json); $arr = json_decode($json, true); print_r($arr);
Hasil output adalah seperti berikut:
Array ( [name] => Tom's book [page] => 100" )
Apabila JSON Apabila rentetan mengandungi bahasa Cina, jika ia tidak diproses, ia akan menyebabkan kegagalan penukaran atau aksara bercelaru. PHP menyediakan fungsi terbina dalam json_encode() untuk menukar tatasusunan kepada rentetan JSON, dan parameter boleh ditetapkan untuk mengelakkan aksara Cina yang kacau.
Contohnya:
$arr = array('name' => '张三', 'age' => 19); $json = json_encode($arr, JSON_UNESCAPED_UNICODE); echo $json;
Atur cara akan mengeluarkan hasil berikut:
{"name":"张三","age":19}
Apabila melakukan pemprosesan terbalik, anda perlu menggunakan aksara JSON dalam UTF-8 rentetan format pengekodan, jika tidak, aksara bercelaru juga akan berlaku.
Apabila format rentetan JSON tidak betul, fungsi json_decode() tidak akan dapat menghuraikan rentetan dengan betul. Pada masa ini, kita perlu melakukan pengesahan format terlebih dahulu pada rentetan JSON, dan kemudian membetulkannya mengikut jenis ralat yang berbeza.
Contohnya:
$json = '[{"name": "Tom", "age": 18}, {"name": "Bob", "age":19}'; $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_UTF8: echo 'JSON字符串包含非UTF-8字符'; break; default: echo 'JSON字符串解析失败'; break; } } else { print_r($arr); }
Hasil output adalah seperti berikut:
JSON字符串格式错误
Di atas ialah kaedah untuk menukar JSON kepada tatasusunan dan penyelesaian kepada pelbagai masalah. Saya harap artikel ini dapat membantu pembangun PHP.
Atas ialah kandungan terperinci Bagaimana untuk menukar data json ke array dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!