Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk menukar data JSON kepada tatasusunan dalam PHP

Bagaimana untuk menukar data JSON kepada tatasusunan dalam PHP

PHPz
Lepaskan: 2023-04-19 11:48:36
asal
715 orang telah melayarinya

Semasa proses pembangunan, kami sering menghadapi keperluan untuk menukar data dalam format JSON ke dalam tatasusunan PHP. Keperluan ini sangat biasa apabila berinteraksi dengan bahagian hadapan, menerima data daripada antara muka sistem lain, dsb. Artikel ini akan menerangkan cara menukar data JSON kepada tatasusunan PHP dalam PHP.

  1. Fungsi terbina dalam PHP json_decode()

PHP mempunyai fungsi terbina dalam json_decode(), yang boleh menukar rentetan format JSON kepada tatasusunan PHP. Berikut ialah contoh menggunakan fungsi json_decode():

$json = '{"name":"john","age":30,"city":"New York"}';
$array = json_decode($json, true);

print_r($array);
Salin selepas log masuk

Hasil output ialah:

Array
(
    [name] => john
    [age] => 30
    [city] => New York
)
Salin selepas log masuk

Dalam contoh di atas, $json ialah rentetan dalam format JSON, $array Ia adalah tatasusunan PHP yang diperoleh selepas menukar $json menggunakan fungsi json_decode(). Perlu diingatkan bahawa parameter kedua fungsi json_decode() mestilah benar, yang bermaksud menukar objek JSON yang ditukar kepada tatasusunan PHP.

  1. Menghuraikan JSON yang mengandungi bahasa Cina

Apabila memproses data JSON yang mengandungi bahasa Cina, kita perlu memberi perhatian kepada masalah pengekodan aksara, jika tidak, kita mungkin menghadapi ralat semasa proses penukaran .

Andaikan terdapat rentetan JSON yang mengandungi bahasa Cina seperti berikut:

$json = '{"name":"张三","age":30}';
Salin selepas log masuk

Apabila kod di atas digunakan untuk menukar rentetan JSON kepada tatasusunan PHP, ralat Notis akan dihasilkan, mendorong "json_decode(): Rentetan input mengandungi aksara UTF-8 yang tidak sah" (rentetan JSON mengandungi aksara UTF-8 yang tidak sah).

Ini kerana fungsi json_decode() hanya menyokong pengekodan UTF-8 secara lalai, dan aksara Cina dalam rentetan JSON dikodkan dalam GBK atau kaedah pengekodan lain, jadi kami perlu menukarnya kepada UTF- 8 pengekodan, dan kemudian penukaran JSON.

Gunakan fungsi PHP terbina dalam iconv() untuk menukar rentetan daripada GBK kepada pengekodan UTF-8:

$json = '{"name":"张三","age":30}';
$json_utf8 = iconv('GBK', 'UTF-8//IGNORE', $json);

$array = json_decode($json_utf8, true);

print_r($array);
Salin selepas log masuk

Hasil keluaran ialah:

Array
(
    [name] => 张三
    [age] => 30
)
Salin selepas log masuk
  1. Pengesahan data JSON

Apabila menukar data JSON, kadangkala kami perlu mengesahkannya untuk memastikan ia mematuhi struktur dan format yang diharapkan.

PHP mempunyai fungsi terbina dalam json_last_error() yang boleh mendapatkan kod ralat yang dijana oleh operasi penukaran JSON yang terakhir. Kita boleh menilai sama ada data JSON memenuhi jangkaan berdasarkan kod ralat.

Sebagai contoh, kod berikut menunjukkan cara untuk menentukan sama ada rentetan JSON yang tidak sah adalah seperti yang dijangkakan semasa menukarnya:

$json = '{"name":"john","age":30,},
    {"name":"mike","age":32}';
$array = json_decode($json, true);

if (json_last_error() === JSON_ERROR_NONE) {
    echo 'JSON 格式正确';
} else {
    echo 'JSON 格式错误';
}
Salin selepas log masuk

Dalam kod di atas, $json mengandungi dua objek JSON bukan dipisahkan dengan koma, yang merupakan ralat format JSON. Oleh itu, fungsi json_last_error() mengembalikan JSON_ERROR_SYNTAX, menunjukkan ralat sintaks JSON.

  1. Kebolehbacaan data JSON

Apabila memproses data JSON, untuk memudahkan penyahpepijatan dan pembacaan, kami juga boleh menambahkan lekukan dan pemisah baris pada data JSON lebih mudah dibaca.

Fungsi terbina dalam PHP json_encode() boleh menukar tatasusunan PHP kepada rentetan format JSON yang lebih mudah dibaca. Contohnya:

$array = [
    'name' => 'john',
    'age' => 30,
    'city' => 'New York'
];

$json = json_encode($array, JSON_PRETTY_PRINT);

echo $json;
Salin selepas log masuk

Hasil output ialah:

{
    "name": "john",
    "age": 30,
    "city": "New York"
}
Salin selepas log masuk

Dalam kod di atas, selepas kami menukar $array menjadi rentetan dalam format JSON, kami lulus parameter JSON_PRETTY_PRINT, yang bermakna rentetan JSON diinden dan dibarisi baharu untuk meningkatkan kebolehbacaan.

Perlu diambil perhatian bahawa parameter JSON_PRETTY_PRINT dalam fungsi json_encode() hanya disokong dalam PHP versi 5.4 dan ke atas.

Ringkasan

Dalam PHP, kita boleh menggunakan fungsi terbina dalam json_decode() untuk menukar rentetan berformat JSON kepada tatasusunan PHP. Apabila memproses data JSON yang mengandungi bahasa Cina, anda perlu memberi perhatian kepada isu pengekodan aksara apabila menukar data JSON, anda perlu mengesahkan sama ada ia memenuhi jangkaan semasa menjana data JSON, anda boleh menggunakan fungsi json_encode() untuk mengoptimumkan kebolehbacaannya;

Di atas ialah kaedah untuk menukar tatasusunan JSON kepada PHP. Saya harap ia akan membantu anda dalam pembangunan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk menukar data JSON kepada tatasusunan 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