php怎麼將json字串轉換為陣列和對象

PHPz
發布: 2023-03-23 11:21:27
原創
1643 人瀏覽過

在PHP開發過程中,Json字串轉換為物件和陣列是一個常見的操作。 Json是一種資料格式,而PHP是一種程式語言,它可以透過json_decode()函數將Json字串轉換為PHP物件和陣列。在本文中,我們將學習如何使用Json字串最常用的方法之一—將Json字串轉換為PHP關聯數組和物件。

Json字串的格式

在我們學習Json字串轉換為PHP物件和陣列之前,讓我們先回顧一下Json字串的格式。 Json字串是一個文字數據,使用鍵值對的形式儲存資料。每個鍵值對由一個「鍵」和一個「值」組成,「鍵」用雙引號包圍,「值」可以是一個數值、一個字串、一個布林值、一個空值、一個Json物件或一個Json數組。

下面是一個Json字串的範例:

{
    "name": "张三",
    "age": 25,
    "gender": "男",
    "address": {
        "province": "北京",
        "city": "朝阳区",
        "street": "和平路"
    },
    "hobbies": [
        "篮球",
        "游泳",
        "旅游"
    ]
}
登入後複製

在上面的範例中,「name」、「age」、「gender」、「address」和「hobbies」是這個Json字串的“鍵”,它們分別對應著“張三”、“25”、“男”、“address”和“hobbies”。其中,「address」是一個Json對象,「hobbies」是一個Json陣列。

將Json字串轉換為PHP陣列

在PHP中,將Json字串轉換為陣列的方法是使用json_decode()函數。 json_decode()函數的語法如下:

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
登入後複製

其中,$json參數是要轉換的Json字串,$assoc參數表示是否將Json物件轉換為PHP關聯數組(true表示轉換為PHP關聯數組, false表示轉換為PHP物件),$depth參數表示轉換的最大深度(預設為512),$options參數表示解碼時的選項(預設為0)。

下面是一個將Json字串轉換為PHP數組的例子:

  <?php

  $json_str = &#39;{"name":"张三","age":25,"gender":"男","address":{"province":"北京","city":"朝阳区","street":"和平路"},"hobbies":["篮球","游泳","旅游"]}&#39;;

  $arr = json_decode($json_str, true);

  print_r($arr);

  ?>
登入後複製

在上面的例子中,我們首先定義了一個Json字串 $json_str。我們使用json_decode()函數將 $json_str 轉換為PHP數組,並將結果儲存在 $arr 變數中。最後,我們使用print_r()函數輸出了陣列的內容。

輸出結果如下所示:

Array
(
    [name] => 张三
    [age] => 25
    [gender] => 男
    [address] => Array
        (
            [province] => 北京
            [city] => 朝阳区
            [street] => 和平路
        )

    [hobbies] => Array
        (
            [0] => 篮球
            [1] => 游泳
            [2] => 旅游
        )

)
登入後複製

將Json字串轉換為PHP物件

除了將Json字串轉換為PHP數組,還可以將其轉換為PHP物件。這個過程也可以使用json_decode()函數來實現,只需要將第二個參數設為false或省略即可。

下面是一個將Json字串轉換為PHP物件的範例:

  <?php

  $json_str = &#39;{"name":"张三","age":25,"gender":"男","address":{"province":"北京","city":"朝阳区","street":"和平路"},"hobbies":["篮球","游泳","旅游"]}&#39;;

  $obj = json_decode($json_str);

  print_r($obj);

  ?>
登入後複製

在上面的範例中,我們將第二個參數設為false,其結果會被轉換為一個PHP物件。

輸出結果如下所示:

stdClass Object
(
    [name] => 张三
    [age] => 25
    [gender] => 男
    [address] => stdClass Object
        (
            [province] => 北京
            [city] => 朝阳区
            [street] => 和平路
        )

    [hobbies] => Array
        (
            [0] => 篮球
            [1] => 游泳
            [2] => 旅游
        )

)
登入後複製

將Json字串中的物件轉換為PHP陣列

如果Json字串中含有對象,並且需要將其轉換為PHP關聯數組,可以先將其轉換為PHP對象,然後使用typecast() 函數將其轉換為關聯數組。

下面是一個將Json字串中的物件轉換為PHP關聯數組的例子:

  <?php

  $json_str = &#39;{"name":"张三","age":25,"gender":"男","address":{"province":"北京","city":"朝阳区","street":"和平路"},"hobbies":["篮球","游泳","旅游"]}&#39;;

  $obj = json_decode($json_str);

  $arr = json_decode(json_encode($obj), true);

  print_r($arr);

  ?>
登入後複製

在上面的例子中,我們首先使用json_decode()函數將Json字串轉換為PHP物件。然後使用json_encode()函數將PHP物件轉換為Json字串,並再次使用json_decode()函數將其轉換為PHP關聯數組。最後,我們使用print_r()函數輸出了陣列的內容。

輸出結果與第一個範例相同。

以上是php怎麼將json字串轉換為陣列和對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板