首頁  >  文章  >  後端開發  >  為什麼「json_decode()」對於有效 JSON 回傳 NULL?

為什麼「json_decode()」對於有效 JSON 回傳 NULL?

Susan Sarandon
Susan Sarandon原創
2024-11-27 10:23:14405瀏覽

Why Does `json_decode()` Return NULL for Valid JSON?

json_decode() 對於有效JSON 回傳NULL:故障排除

嘗試使用json_decode() 解碼JSON 資料時,開發人員可能會遇到以下情況:儘管JSON 看似有效,但函數傳回NULL。當 JSON 通過線上 JSON 驗證器的驗證時,這個問題可能會特別令人費解。為了了解發生這種情況的原因並有效解決它,讓我們深入研究問題及其解決方案。

JSON 字串中的無效字元

此問題的一個常見原因是JSON 字串中存在無效字元。雖然大多數 JSON 驗證器都會忽略它們,但 PHP 的 json_decode() 函數在遇到此類字元時可能會突然終止。這些無效字元的範圍通常是 0x00 到 0x1F 和 0x80 到 0xFF。

解決方案:刪除無效字元

要解決此問題,您可以使用 preg_replace() 函數在嘗試解碼之前從 JSON 字串中刪除所有無效字元。以下程式碼示範如何執行此操作:

$json_string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string);

此正規表示式會刪除 0x00 到 0x1F 之間的所有字元以及 0x80 到 0xFF 之間的字符,有效過濾掉無效字元。

真正的關聯數組

另一個問題當您期望結果是真正的關聯數組,但PHP 將其解釋為對象時,可能會導致json_decode()返回NULL。當 JSON 字串包含未用雙引號括起來的屬性鍵時,就會發生這種情況。

要確保結果是真正的關聯數組,可以使用 json_decode() 的第二個參數並將其設為 true 。這將強制結果是關聯數組而不是物件。範例如下:

$json_data = json_decode($json_string, true);

透過使用這些解決方案,您可以有效解決json_decode() 對於看似有效的JSON 資料傳回NULL 的問題,讓您能夠在PHP 應用程式中成功解析並利用JSON數據.

以上是為什麼「json_decode()」對於有效 JSON 回傳 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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