Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana dengan cepat menukar objek JSON kepada tatasusunan atau tatasusunan objek dalam php

Bagaimana dengan cepat menukar objek JSON kepada tatasusunan atau tatasusunan objek dalam php

PHPz
PHPzasal
2023-04-27 16:38:11620semak imbas

Dengan perkembangan berterusan teknologi Internet, interaksi data telah menjadi bahagian penting dalam pembangunan aplikasi Internet. Dalam pembangunan Web, "interaksi data" amat penting. Penukaran format data juga kerap digunakan dalam pembangunan aplikasi web.

Dalam interaksi data, JSON ialah format data yang sangat popular yang melaluinya objek atau tatasusunan data boleh dihantar ke tapak web atau aplikasi. PHP ialah bahasa skrip yang ditaip dengan kuat Berbanding dengan bahasa lain, PHP lebih mudah untuk menghuraikan dan menggunakan format JSON. Dalam pembangunan PHP, ia juga merupakan keperluan biasa untuk menukar rentetan berformat JSON kepada tatasusunan atau objek. Kemudian artikel ini akan memperkenalkan cara menukar objek JSON ke dalam tatasusunan atau tatasusunan objek dengan cepat.

Apakah format JSON?

JSON ialah singkatan Notasi Objek JavaScript, yang merupakan format pertukaran data yang ringan. JSON ialah bahasa untuk bertukar-tukar data Ia adalah struktur pasangan nilai kunci yang menggunakan teks yang boleh dibaca manusia untuk menghantar data.

Berikut ialah contoh JSON yang mudah.

{
  "name": "bob",
  "age": 25,
  "address": {
    "city": "beijing",
    "province": "BJ"
  }
}

Data format JSON disertakan dengan pendakap kerinting dan data wujud dalam bentuk pasangan nilai kunci, dipisahkan dengan titik bertindih. Untuk objek JSON, kuncinya mestilah rentetan, dengan pasangan nilai kunci dipisahkan dengan koma. Dalam contoh di atas, name, age dan address ialah tiga kunci dan nilai yang sepadan ialah "bob", 25 dan objek JSON yang lain masing-masing.

Menghuraikan format JSON dalam PHP

PHP menyediakan dua fungsi terbina dalam untuk menghuraikan rentetan JSON: json_encode() dan json_decode().

  • json_encode(): Tukar tatasusunan PHP atau objek kepada rentetan JSON.
  • json_decode(): Tukar rentetan format JSON kepada tatasusunan atau objek PHP.

Contoh berikut menunjukkan cara menggunakan json_encode() untuk menukar tatasusunan PHP kepada rentetan berformat JSON.

$myArr = array('name' => 'Bob', 'age' => 25, 'address' => array('city' => 'beijing', 'province' => 'BJ'));
$jsonStr = json_encode($myArr);

echo $jsonStr; // 输出 {"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}

Begitu juga, kita boleh menggunakan fungsi json_decode() untuk menukar rentetan format JSON kepada tatasusunan PHP.

$jsonStr = '{"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}';
$myArr = json_decode($jsonStr, true);

print_r($myArr); // Array ( [name] => Bob [age] => 25 [address] => Array ( [city] => beijing [province] => BJ ) )

Anda boleh mendapati bahawa nilai pulangan bagi fungsi json_decode() ialah tatasusunan PHP. Jika anda mahukan objek PHP, anda boleh meninggalkan parameter kedua, dan objek PHP akan dikembalikan. Seperti yang ditunjukkan di bawah:

$jsonStr = '{"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}';
$myObj = json_decode($jsonStr);

echo $myObj->name; // 输出 Bob
echo $myObj->address->province; // 输出 BJ

Seterusnya, artikel ini akan memperkenalkan cara menukar objek JSON kepada tatasusunan PHP atau tatasusunan objek.

Tukar objek JSON kepada tatasusunan

Di atas kami telah memperkenalkan cara menukar rentetan berformat JSON kepada tatasusunan PHP. Tetapi kadangkala kita akan memasukkan objek JSON dari luar dan perlu menukarnya menjadi tatasusunan PHP untuk pemprosesan yang lebih mudah. Berikut ialah beberapa cara biasa untuk menukar objek JSON kepada tatasusunan PHP.

1. Gunakan json_decode()

Menggunakan fungsi json_decode() juga boleh menyelesaikan masalah ini, tetapi anda perlu lulus dalam parameter kedua.

$jsonStr = '{ "name": "bob", "age": 25, "address": { "city": "beijing", "province": "BJ" } }';
$jsonObj = json_decode($jsonStr, true);

print_r($jsonObj);

Hasil keluaran:

Array
(
    [name] => bob
    [age] => 25
    [address] => Array
        (
            [city] => beijing
            [province] => BJ
        )

)

Dalam contoh ini, parameter kedua fungsi json_decode() ditetapkan kepada true, yang bermaksud menukar objek JSON kepada tatasusunan PHP.

2. Gunakan penukaran jenis paksa

Terdapat kaedah penukaran jenis paksa dalam PHP: memaksa objek ke dalam tatasusunan. Menggunakan kaedah ini, objek JSON boleh ditukar dengan cepat menjadi tatasusunan PHP.

$jsonStr = '{ "name": "bob", "age": 25, "address": { "city": "beijing", "province": "BJ" } }';
$jsonObj = json_decode($jsonStr);
$jsonArr = (array)$jsonObj;

print_r($jsonArr);

Hasil keluaran:

Array
(
    [name] => bob
    [age] => 25
    [address] => stdClass Object
        (
            [city] => beijing
            [province] => BJ
        )

)

Perlu diingat bahawa apabila menggunakan penukaran jenis paksa, anda perlu menukar objek stdClass dalam hasil output kepada tatasusunan PHP. Pada masa ini, masalah boleh diselesaikan menggunakan rekursi gelung. Untuk mengelakkan masalah ini, secara amnya disyorkan untuk menggunakan fungsi json_decode() untuk menukar objek JSON kepada tatasusunan PHP.

Tukar objek JSON kepada tatasusunan objek

Kami juga boleh menukar objek JSON kepada tatasusunan objek PHP. Dalam pembangunan PHP, ia sebenarnya lebih biasa untuk menukar tatasusunan JSON kepada tatasusunan objek PHP. Berikut ialah dua cara biasa untuk menukar objek JSON kepada tatasusunan objek.

1. Gunakan json_decode()

untuk menukar objek JSON kepada tatasusunan objek PHP melalui json_decode() dan rekursi gelung.

$jsonStr = '{ "name": "Bob", "age": 25, "address": {"city": "beijing", "province": "BJ"} }';
$jsonObj = json_decode($jsonStr);
$objArr = array();

foreach ($jsonObj as $key => $value) {
    if (is_object($value)) {
        $objArr[$key] = $this->getJSONObj($value);
    } else if (is_array($value)) {
        $arr = array();
        foreach ($value as $item) {
            if (is_object($item)) {
                array_push($arr, $this->getJSONObj($item));
            } else {
                array_push($arr, $item);
            }
        }
        $objArr[$key] = $arr;
    } else {
        $objArr[$key] = $value;
    }
}

var_dump($objArr);

Fungsi getJSONObj() di sini menukar objek JSON kepada tatasusunan objek PHP dan mengembalikannya.

2. Gunakan fungsi array_map()

Selain kaedah rekursi gelung, kita juga boleh menggunakan fungsi array_map() dan fungsi tanpa nama untuk menukar objek JSON kepada tatasusunan objek PHP kod adalah seperti berikut :

$jsonStr = '{ "name": "Bob", "age": 25, "address": {"city": "beijing", "province": "BJ"} }';
$jsonObj = json_decode($jsonStr);

$objArr = (array)$jsonObj;
$objArr = array_map(function ($item) {
    if (is_object($item)) {
        return $this->getJSONObj($item);
    } elseif (is_array($item)) {
        return array_map(function ($sub_item) {
            return (is_object($sub_item)) ? $this->getJSONObj($sub_item) : $sub_item;
        }, $item);
    } else {
        return $item;
    }
}, $objArr);
var_dump($objArr);

Di atas ialah dua cara biasa untuk menukar objek JSON kepada tatasusunan objek Setiap kaedah boleh digunakan secara fleksibel mengikut keperluan anda sendiri.

Ringkasan

Artikel ini memperkenalkan cara menukar data format JSON kepada tatasusunan PHP atau tatasusunan objek. Untuk penukaran antara format JSON dan tatasusunan dalam pembangunan PHP, fungsi json_encode() dan json_decode() adalah alat yang sangat berguna. Terdapat banyak kaedah untuk dipilih untuk menukar objek JSON kepada tatasusunan PHP atau tatasusunan objek. Pembaca boleh memilih kaedah yang paling sesuai untuk pelaksanaan berdasarkan keperluan pembangunan sebenar.

Atas ialah kandungan terperinci Bagaimana dengan cepat menukar objek JSON kepada tatasusunan atau tatasusunan objek 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