首頁  >  文章  >  後端開發  >  聊聊怎麼將json資料轉為php數組或對象

聊聊怎麼將json資料轉為php數組或對象

PHPz
PHPz原創
2023-04-17 15:25:58574瀏覽

JSON格式是一種輕量級的資料交換格式,由於其簡單易用、快速高效的優點,已經成為了廣泛應用的資料格式。而在PHP中,我們可以使用json_decode()函數將JSON字串轉換為PHP陣列或物件。本文將介紹如何將JSON格式的資料轉換為PHP數組或對象,同時也將探討如何處理JSON中的陣列與物件。

一、將JSON字串轉換為PHP數組

下面是一個JSON資料的例子:

{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "address": {
      "city": "Beijing",
      "province": "Beijing",
      "country": "China"
   }
}

我們可以使用json_decode()函數將其轉換為PHP數組:

$json = '{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "address": {
      "city": "Beijing",
      "province": "Beijing",
      "country": "China"
   }
}';

$array = json_decode($json, true);

在呼叫json_decode()函數時,第一個參數傳入的是要轉換的JSON字串,而第二個參數傳入的是一個布林值,用於指定轉換後的物件是數組(true)還是物件(false),因為預設情況下json_decode()函數將JSON字串轉換為物件。

我們將第二個參數設為true,那麼傳回值就是一個PHP數組,其結果如下:

Array
(
    [name] => Tom
    [age] => 26
    [email] => tom@example.com
    [hobbies] => Array
        (
            [0] => reading
            [1] => swimming
            [2] => traveling
        )

    [address] => Array
        (
            [city] => Beijing
            [province] => Beijing
            [country] => China
        )

)

二、將JSON字串轉換為PHP物件

如果將json_decode()函數的第二個參數設為false,則傳回的是PHP物件。以下是範例程式碼:

$json = '{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "address": {
      "city": "Beijing",
      "province": "Beijing",
      "country": "China"
   }
}';

$obj = json_decode($json, false);

將第二個參數設為false後,$obj就是一個PHP對象,其結果如下:

stdClass Object
(
    [name] => Tom
    [age] => 26
    [email] => tom@example.com
    [hobbies] => Array
        (
            [0] => reading
            [1] => swimming
            [2] => traveling
        )

    [address] => stdClass Object
        (
            [city] => Beijing
            [province] => Beijing
            [country] => China
        )

)

三、處理JSON中的陣列

當JSON資料中包含陣列時,我們仍然可以使用json_decode()函數將其轉換為PHP陣列或物件。以下是一個包含陣列的JSON資料的範例:

{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "scores": [
      {"subject": "math", "score": 90},
      {"subject": "physics", "score": 85},
      {"subject": "chemistry", "score": 78}
   ]
}

我們可以使用json_decode()函數將其轉換為PHP陣列:

$json = '{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "scores": [
      {"subject": "math", "score": 90},
      {"subject": "physics", "score": 85},
      {"subject": "chemistry", "score": 78}
   ]
}';

$array = json_decode($json, true);

轉換後的結果如下:

Array
(
    [name] => Tom
    [age] => 26
    [email] => tom@example.com
    [hobbies] => Array
        (
            [0] => reading
            [1] => swimming
            [2] => traveling
        )

    [scores] => Array
        (
            [0] => Array
                (
                    [subject] => math
                    [score] => 90
                )

            [1] => Array
                (
                    [subject] => physics
                    [score] => 85
                )

            [2] => Array
                (
                    [subject] => chemistry
                    [score] => 78
                )

        )

)

我們也可以將json_decode()函數的第二個參數設為false,將其轉換為PHP物件。轉換後的結果如下:

stdClass Object
(
    [name] => Tom
    [age] => 26
    [email] => tom@example.com
    [hobbies] => Array
        (
            [0] => reading
            [1] => swimming
            [2] => traveling
        )

    [scores] => Array
        (
            [0] => stdClass Object
                (
                    [subject] => math
                    [score] => 90
                )

            [1] => stdClass Object
                (
                    [subject] => physics
                    [score] => 85
                )

            [2] => stdClass Object
                (
                    [subject] => chemistry
                    [score] => 78
                )

        )

)

四、處理JSON中的物件

當JSON資料中包含物件時,我們同樣可以使用json_decode()函數將其轉換為PHP陣列或對象。以下是一個包含物件的JSON資料的範例:

{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "address": {
      "city": "Beijing",
      "province": "Beijing",
      "country": "China"
   },
   "scores": {
      "math": 90,
      "physics": 85,
      "chemistry": 78
   }
}

我們仍然可以使用json_decode()函數將其轉換為PHP數組或物件:

$json = '{
   "name": "Tom",
   "age": 26,
   "email": "tom@example.com",
   "hobbies": ["reading", "swimming", "traveling"],
   "address": {
      "city": "Beijing",
      "province": "Beijing",
      "country": "China"
   },
   "scores": {
      "math": 90,
      "physics": 85,
      "chemistry": 78
   }
}';

$array = json_decode($json, true);
$obj = json_decode($json, false);

轉換後的PHP數組和物件分別如下:

Array
(
    [name] => Tom
    [age] => 26
    [email] => tom@example.com
    [hobbies] => Array
        (
            [0] => reading
            [1] => swimming
            [2] => traveling
        )

    [address] => Array
        (
            [city] => Beijing
            [province] => Beijing
            [country] => China
        )

    [scores] => Array
        (
            [math] => 90
            [physics] => 85
            [chemistry] => 78
        )

)

stdClass Object
(
    [name] => Tom
    [age] => 26
    [email] => tom@example.com
    [hobbies] => Array
        (
            [0] => reading
            [1] => swimming
            [2] => traveling
        )

    [address] => stdClass Object
        (
            [city] => Beijing
            [province] => Beijing
            [country] => China
        )

    [scores] => stdClass Object
        (
            [math] => 90
            [physics] => 85
            [chemistry] => 78
        )

)

五、將PHP數組或物件轉換為JSON

在完成對JSON資料的解析和操作後,我們可能還需要將PHP數組或物件轉換為JSON格式的字串,以便於後續處理或傳輸。可以使用json_encode()函數將PHP陣列或物件轉換為JSON格式的字串。下面是範例程式碼:

$array = array(
   'name' => 'Tom',
   'age' => 26,
   'email' => 'tom@example.com',
   'hobbies' => array('reading', 'swimming', 'traveling'),
   'address' => array(
      'city' => 'Beijing',
      'province' => 'Beijing',
      'country' => 'China'
   ),
   'scores' => array(
      'math' => 90,
      'physics' => 85,
      'chemistry' => 78
   )
);

$json = json_encode($array);

呼叫json_encode()函數後,$json的值就是轉換後的JSON格式字串,其結果如下:

{
   "name":"Tom",
   "age":26,
   "email":"tom@example.com",
   "hobbies":["reading","swimming","traveling"],
   "address":{
      "city":"Beijing",
      "province":"Beijing",
      "country":"China"
   },
   "scores":{
      "math":90,
      "physics":85,
      "chemistry":78
   }
}

六、將PHP數組或對象轉換為JSON並輸出

如果需要在PHP中直接輸出JSON格式的數據,我們可以在呼叫json_encode()函數後直接輸出結果。如下範例:

$array = array(
   'name' => 'Tom',
   'age' => 26,
   'email' => 'tom@example.com',
   'hobbies' => array('reading', 'swimming', 'traveling'),
   'address' => array(
      'city' => 'Beijing',
      'province' => 'Beijing',
      'country' => 'China'
   ),
   'scores' => array(
      'math' => 90,
      'physics' => 85,
      'chemistry' => 78
   )
);

header('Content-Type: application/json');
echo json_encode($array);

在上面範例中,我們透過header()函數設定回應頭訊息,將ContentType設定為application/json,表示傳回的資料是JSON格式的。然後使用echo輸出轉換後的JSON資料。

結語

本文主要介紹如何將JSON資料轉換為PHP數組或對象,同時也探討如何處理JSON中的數組和對象,並且演示了將PHP數組或對象轉換為JSON格式的字串的方法。希望本文能為PHP開發者提供協助。

以上是聊聊怎麼將json資料轉為php數組或對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn