首頁 >後端開發 >php教程 >為什麼 `json_decode()` 傳回一個物件而不是數組,如何修復它?

為什麼 `json_decode()` 傳回一個物件而不是數組,如何修復它?

Susan Sarandon
Susan Sarandon原創
2024-12-26 21:30:19558瀏覽

Why Does `json_decode()` Return an Object Instead of an Array, and How Can I Fix It?

對json_decode() 建立陣列進行故障排除

嘗試使用json_decode() 將JSON 資料解析為陣列時,開發人員可能會群組時,開發人員可能會群組時,開發人員可能會群組時,開發人員可能會群組時,開發人員可能會群組時,開發人員可能會群組遇到錯誤表示物件不能用作數組。本文旨在解決這個問題,解釋從 JSON 字串建立陣列的正確方法。

錯誤解釋

錯誤「Fatal error: Cannot use object of type stdClass as array」表示 json_decode() 已將 JSON 資料解釋為物件而非陣列。預設情況下,json_decode() 傳回一個 stdClass 對象,該物件具有與 JSON 物件的鍵對應的屬性。

解決方案:指定回傳類型

要解決此問題,有必要明確指出所需的回傳值應該是一個陣列。這是透過指定 true 作為 json_decode() 的第二個參數來實現的,如下所示:

$result = json_decode($jsondata, true);

透過此修改,$result 將成為關聯數組,其中鍵與 JSON中的屬性名稱符合object.

替代選項

在首選整數鍵的場景中除了屬性名稱之外,還需要一個額外的步驟:

$result = array_values(json_decode($jsondata, true));

此程式碼首先將JSON 資料解碼為關聯數組,然後使用array_values()將其轉換為具有整數鍵的陣列。

存取數組元素

一旦 JSON 資料成功解碼為數組,存取它的元素很簡單。以下程式碼展示如何從JSON 字串存取「Result」屬性:

print_r($result['Result']);

透過遵循這些準則,開發人員可以使用json_decode() 有效地從JSON 字串建立數組,避免處理物件的錯誤作為數組。

以上是為什麼 `json_decode()` 傳回一個物件而不是數組,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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