溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php如何將json字符串轉(zhuǎn)換為數(shù)組和對象

發(fā)布時(shí)間:2023-03-23 11:34:42 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“php如何將json字符串轉(zhuǎn)換為數(shù)組和對象”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Json字符串的格式

在我們學(xué)習(xí)Json字符串轉(zhuǎn)換為PHP對象和數(shù)組之前,讓我們先回顧一下Json字符串的格式。Json字符串是一個(gè)文本數(shù)據(jù),使用鍵值對的形式存儲數(shù)據(jù)。每個(gè)鍵值對由一個(gè)“鍵”和一個(gè)“值”組成,“鍵”用雙引號包圍,“值”可以是一個(gè)數(shù)值、一個(gè)字符串、一個(gè)布爾值、一個(gè)空值、一個(gè)Json對象或一個(gè)Json數(shù)組。

下面是一個(gè)Json字符串的例子:

{
    "name": "張三",
    "age": 25,
    "gender": "男",
    "address": {
        "province": "北京",
        "city": "朝陽區(qū)",
        "street": "和平路"
    },
    "hobbies": [
        "籃球",
        "游泳",
        "旅游"
    ]
}

在上面的例子中,“name”、“age”、“gender”、“address”和“hobbies”是這個(gè)Json字符串的“鍵”,它們分別對應(yīng)著“張三”、“25”、“男”、“address”和“hobbies”。其中,“address”是一個(gè)Json對象,“hobbies”是一個(gè)Json數(shù)組。

將Json字符串轉(zhuǎn)換為PHP數(shù)組

在PHP中,將Json字符串轉(zhuǎn)換為數(shù)組的方法是使用json_decode()函數(shù)。json_decode()函數(shù)的語法如下:

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

其中,$json參數(shù)是要轉(zhuǎn)換的Json字符串,$assoc參數(shù)表示是否將Json對象轉(zhuǎn)換為PHP關(guān)聯(lián)數(shù)組(true表示轉(zhuǎn)換為PHP關(guān)聯(lián)數(shù)組,false表示轉(zhuǎn)換為PHP對象),$depth參數(shù)表示轉(zhuǎn)換的最大深度(默認(rèn)為512),$options參數(shù)表示解碼時(shí)的選項(xiàng)(默認(rèn)為0)。

下面是一個(gè)將Json字符串轉(zhuǎn)換為PHP數(shù)組的例子:

  <?php

  $json_str = '{"name":"張三","age":25,"gender":"男","address":{"province":"北京","city":"朝陽區(qū)","street":"和平路"},"hobbies":["籃球","游泳","旅游"]}';

  $arr = json_decode($json_str, true);

  print_r($arr);

  ?>

在上面的例子中,我們首先定義了一個(gè)Json字符串 $json_str。我們使用json_decode()函數(shù)將 $json_str 轉(zhuǎn)換為PHP數(shù)組,并將結(jié)果存儲在 $arr 變量中。最后,我們使用print_r()函數(shù)輸出了數(shù)組的內(nèi)容。

輸出結(jié)果如下所示:

Array
(
    [name] => 張三
    [age] => 25
    [gender] => 男
    [address] => Array
        (
            [province] => 北京
            [city] => 朝陽區(qū)
            [street] => 和平路
        )

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

)

將Json字符串轉(zhuǎn)換為PHP對象

除了將Json字符串轉(zhuǎn)換為PHP數(shù)組,還可以將其轉(zhuǎn)換為PHP對象。這個(gè)過程也可以使用json_decode()函數(shù)來實(shí)現(xiàn),只需要將第二個(gè)參數(shù)設(shè)置為false或省略即可。

下面是一個(gè)將Json字符串轉(zhuǎn)換為PHP對象的例子:

  <?php

  $json_str = '{"name":"張三","age":25,"gender":"男","address":{"province":"北京","city":"朝陽區(qū)","street":"和平路"},"hobbies":["籃球","游泳","旅游"]}';

  $obj = json_decode($json_str);

  print_r($obj);

  ?>

在上面的例子中,我們將第二個(gè)參數(shù)設(shè)置為false,其結(jié)果會被轉(zhuǎn)換為一個(gè)PHP對象。

輸出結(jié)果如下所示:

stdClass Object
(
    [name] => 張三
    [age] => 25
    [gender] => 男
    [address] => stdClass Object
        (
            [province] => 北京
            [city] => 朝陽區(qū)
            [street] => 和平路
        )

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

)

將Json字符串中的對象轉(zhuǎn)換為PHP數(shù)組

如果Json字符串中含有對象,并且需要將其轉(zhuǎn)換為PHP關(guān)聯(lián)數(shù)組,可以先將其轉(zhuǎn)換為PHP對象,然后使用 typecast() 函數(shù)將其轉(zhuǎn)換為關(guān)聯(lián)數(shù)組。

下面是一個(gè)將Json字符串中的對象轉(zhuǎn)換為PHP關(guān)聯(lián)數(shù)組的例子:

  <?php

  $json_str = '{"name":"張三","age":25,"gender":"男","address":{"province":"北京","city":"朝陽區(qū)","street":"和平路"},"hobbies":["籃球","游泳","旅游"]}';

  $obj = json_decode($json_str);

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

  print_r($arr);

  ?>

在上面的例子中,我們首先使用json_decode()函數(shù)將Json字符串轉(zhuǎn)換為PHP對象。然后使用json_encode()函數(shù)將PHP對象轉(zhuǎn)換為Json字符串,并再次使用json_decode()函數(shù)將其轉(zhuǎn)換為PHP關(guān)聯(lián)數(shù)組。最后,我們使用print_r()函數(shù)輸出了數(shù)組的內(nèi)容。

輸出結(jié)果與第一個(gè)例子相同。

“php如何將json字符串轉(zhuǎn)換為數(shù)組和對象”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI