Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar rentetan json kepada objek tatasusunan dalam php

Bagaimana untuk menukar rentetan json kepada objek tatasusunan dalam php

PHPz
PHPzasal
2023-04-25 17:35:39972semak imbas

Dalam pembangunan PHP, selalunya perlu menukar rentetan JSON kepada tatasusunan atau objek untuk memudahkan pemprosesan data. JSON (JavaScript Object Notation) ialah format pertukaran data ringan yang menggunakan sintaks yang serupa dengan JavaScript dan boleh dihuraikan dan dijana dengan mudah oleh pelbagai bahasa pengaturcaraan dan rangka kerja.

Dalam PHP, anda boleh menggunakan fungsi json_decode() untuk menukar rentetan JSON kepada tatasusunan atau objek PHP. Sintaks fungsi ini adalah seperti berikut:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

Perihalan parameter:

  • $json ialah rentetan JSON untuk dihuraikan.
  • $assoc ialah parameter pilihan yang menunjukkan jenis data yang ditukar. Jika ditetapkan kepada benar, tatasusunan bersekutu dikembalikan jika ditetapkan kepada palsu (lalai), objek dikembalikan.
  • $depth ialah parameter pilihan, menunjukkan kedalaman rekursi maksimum. Nilai lalai ialah 512.
  • $options ialah parameter pilihan, menunjukkan pilihan semasa menghuraikan JSON. Nilai lalai ialah 0.

Seterusnya, kami menunjukkan cara menukar rentetan JSON kepada tatasusunan atau objek PHP.

Contoh 1: Tukar rentetan JSON kepada tatasusunan PHP

$jsonStr = '{"name":"John", "age":30, "city":"New York"}';
$assocArr = json_decode($jsonStr, true);

print_r($assocArr);

Hasil keluaran:

Array
(
    [name] => John
    [age] => 30
    [city] => New York
)

Dalam contoh di atas, kami menggunakan fungsi json_decode() Tukar JSON rentetan kepada tatasusunan bersekutu. Perlu diingat bahawa jika parameter $assoc ditetapkan kepada benar, tatasusunan bersekutu dikembalikan jika tidak, objek dikembalikan.

Contoh 2: Tukar rentetan JSON kepada objek PHP

$jsonStr = '{"name":"John", "age":30, "city":"New York"}';
$obj = json_decode($jsonStr);

echo $obj->name . "\n";
echo $obj->age . "\n";
echo $obj->city . "\n";

Hasil output:

John
30
New York

Dalam contoh di atas, kami menggunakan fungsi json_decode() Tukar JSON rentetan ke objek. Perlu diingat bahawa jika parameter $assoc tidak ditetapkan kepada benar (atau parameter tidak diluluskan), objek akan dikembalikan jika tidak, tatasusunan bersekutu akan dikembalikan.

Contoh 3: Mengendalikan rentetan JSON dengan ralat penghuraian

Kadangkala, kita akan menemui beberapa rentetan JSON bukan standard atau rentetan JSON mengandungi data yang salah. Jika kami menggunakan fungsi json_decode() secara langsung, pengecualian akan dilemparkan atau palsu akan dikembalikan. Dalam kes ini, kita boleh menggunakan pernyataan cuba-tangkap untuk mengendalikan pengecualian, atau menggunakan parameter pilihan kedua untuk mengesan sama ada penghuraian berjaya.

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

if ($array === null) {
    echo '解析JSON失败:' . json_last_error_msg() . "\n";
}

Hasil keluaran:

解析JSON失败:Syntax error

Dalam contoh di atas, kami sengaja memadamkan pendakap kerinting pengakhiran rentetan JSON, menjadikannya rentetan JSON yang tidak sah. Dengan menggunakan parameter pilihan kedua, kita boleh mengesan sama ada penghuraian berjaya Jika nol dikembalikan, penghuraian gagal. Pada masa ini, kita boleh menggunakan fungsi json_last_error_msg() untuk mendapatkan sebab khusus kegagalan penghuraian.

Ringkasan

Melalui contoh di atas, kita dapat melihat bahawa menukar rentetan JSON kepada tatasusunan atau objek dalam PHP adalah sangat mudah, hanya gunakan fungsi json_decode(). Perlu diingat bahawa jika rentetan JSON tidak diseragamkan, ia juga boleh menyebabkan kegagalan penghuraian Kita boleh menggunakan pernyataan cuba-tangkap untuk mengendalikan pengecualian, atau menggunakan parameter pilihan kedua untuk mengesan sama ada penghuraian berjaya.

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

Kenyataan:
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