Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menukar data json ke array dalam php

Bagaimana untuk menukar data json ke array dalam php

PHPz
Lepaskan: 2023-04-24 15:26:51
asal
1884 orang telah melayarinya

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 ]]] )
Salin selepas log masuk

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"]}
Salin selepas log masuk

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);
Salin selepas log masuk

Outputnya ialah seperti berikut :

Array
(
    [name] => Tom
    [age] => 18
    [hobbies] => Array
        (
            [0] => music
            [1] => movies
        )

)
Salin selepas log masuk

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.

  1. Rentetan JSON mengandungi aksara khas

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);
Salin selepas log masuk

Hasil output adalah seperti berikut:

Array
(
    [name] => Tom's book
    [page] => 100"
)
Salin selepas log masuk
  1. Rentetan JSON mengandungi bahasa Cina

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;
Salin selepas log masuk

Atur cara akan mengeluarkan hasil berikut:

{"name":"张三","age":19}
Salin selepas log masuk

Apabila melakukan pemprosesan terbalik, anda perlu menggunakan aksara JSON dalam UTF-8 rentetan format pengekodan, jika tidak, aksara bercelaru juga akan berlaku.

  1. Ralat format rentetan JSON

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);
}
Salin selepas log masuk

Hasil output adalah seperti berikut:

JSON字符串格式错误
Salin selepas log masuk

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!

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