溫馨提示×

溫馨提示×

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

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

php怎么快速將JSON對象轉(zhuǎn)為數(shù)組或?qū)ο髷?shù)組

發(fā)布時間:2023-05-11 11:43:24 來源:億速云 閱讀:243 作者:iii 欄目:編程語言

這篇“php怎么快速將JSON對象轉(zhuǎn)為數(shù)組或?qū)ο髷?shù)組”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“php怎么快速將JSON對象轉(zhuǎn)為數(shù)組或?qū)ο髷?shù)組”文章吧。

什么是JSON格式?

JSON是JavaScript對象表示法(JavaScript Object Notation)的縮寫,它是一種輕量級的數(shù)據(jù)交換格式。JSON是一種用于交換數(shù)據(jù)的語言,它是一種鍵值對的結(jié)構(gòu),使用人類可讀的文本來傳輸數(shù)據(jù)。

以下是一個簡單的JSON的示例。

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

JSON格式的數(shù)據(jù)由花括號包含,數(shù)據(jù)以鍵值對的方式存在,用冒號分割。對于一個JSON對象,它的鍵必須是一個字符串,鍵值對使用逗號分隔。在上面的示例中,nameageaddress 是三個鍵,對應(yīng)的值分別是 "bob",25 和另外一個JSON對象。

PHP中解析JSON格式

PHP提供了兩個內(nèi)置的函數(shù)用于解析JSON字符串:json_encode()json_decode()。

  • json_encode():將PHP數(shù)組或?qū)ο筠D(zhuǎn)換為JSON字符串。

  • json_decode():將JSON格式的字符串轉(zhuǎn)換成PHP數(shù)組或?qū)ο蟆?/p>

下面的示例展示了如何使用json_encode()來將一個PHP數(shù)組轉(zhuǎn)換成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"}}

同樣,我們可以使用json_decode()函數(shù)將JSON格式字符串轉(zhuǎn)換為PHP數(shù)組。

$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 ) )

可以發(fā)現(xiàn),json_decode() 函數(shù)的返回值是一個PHP數(shù)組。如果你想要的是一個PHP對象,可以省略第二個參數(shù),這個時候返回的是PHP對象。如下所示:

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

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

接下來,本文將介紹如何將一個JSON對象轉(zhuǎn)化成PHP數(shù)組或?qū)ο髷?shù)組。

JSON對象轉(zhuǎn)成數(shù)組

上面我們已經(jīng)介紹了如何將JSON格式的字符串轉(zhuǎn)為PHP數(shù)組。但是有時候我們會從外部傳進(jìn)來一個JSON對象,需要將它轉(zhuǎn)換成PHP數(shù)組才能更方便地進(jìn)行處理。下面介紹幾種常見的方式來實現(xiàn)JSON對象轉(zhuǎn)為PHP數(shù)組。

1. 使用 json_decode()

使用 json_decode() 函數(shù)同樣可以解決這個問題,但是需要傳入第二個參數(shù)。

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

print_r($jsonObj);

輸出結(jié)果:

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

)

在這個例子中,json_decode() 函數(shù)的第二個參數(shù)設(shè)置為 true,表示將JSON對象轉(zhuǎn)化成一個PHP數(shù)組。

2. 使用強(qiáng)制類型轉(zhuǎn)換

PHP中有一種強(qiáng)制類型轉(zhuǎn)換的方式:將一個對象強(qiáng)制轉(zhuǎn)換成數(shù)組。使用這種方式,可以將一個JSON對象快速轉(zhuǎn)換成PHP數(shù)組。

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

print_r($jsonArr);

輸出結(jié)果:

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

)

需要注意的是,使用強(qiáng)制類型轉(zhuǎn)換方式時需要注意將輸出結(jié)果中的stdClass對象轉(zhuǎn)化成PHP數(shù)組。此時可以使用循環(huán)遞歸的方式解決該問題。為了避免該問題,一般建議使用 json_decode() 函數(shù)將JSON對象轉(zhuǎn)化成PHP數(shù)組。

JSON對象轉(zhuǎn)成對象數(shù)組

我們也可以將JSON對象轉(zhuǎn)換成PHP對象數(shù)組。在PHP開發(fā)中,實際上更常見的是將一個JSON數(shù)組轉(zhuǎn)換成PHP對象數(shù)組。下面介紹兩種常見的方式來實現(xiàn)JSON對象轉(zhuǎn)為對象數(shù)組。

1. 使用json_decode()

可以通過json_decode()和循環(huán)遞歸的方式實現(xiàn)JSON對象轉(zhuǎn)為PHP對象數(shù)組。

$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);

這里的 getJSONObj() 函數(shù)將JSON對象轉(zhuǎn)化成PHP 對象數(shù)組并返回。

2. 使用array_map()函數(shù)

除了循環(huán)遞歸的方式,我們也可以使用 array_map() 函數(shù)和匿名函數(shù)來實現(xiàn)JSON對象轉(zhuǎn)化成PHP對象數(shù)組,代碼如下所示:

$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);

以上就是關(guān)于“php怎么快速將JSON對象轉(zhuǎn)為數(shù)組或?qū)ο髷?shù)組”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

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

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

AI