PHP中json_decode返回值爲null

今天在調用接口獲取json數據轉碼的時候遇到了問題,記錄一下

1.問題描述

成功獲取到了數據,但經過json_decode 解碼後卻爲 null

2.分析

使用 json_last_error() 函數得到錯誤代碼 3,在網上查到原因爲返回的數據爲 UTF-8BOM 頭編碼,而 PHP 使用的是 無 BOM 頭的UTF-8編碼,所以解析錯誤,知道錯誤了就好辦了,下面就來解決。

3.解決

這裏我使用了正則替換的方法

// 注意,這裏要先把空格給清除掉
$tempResult =  preg_replace('/[\x00-\x1F\x80-\x9F]/u', '',trim($tempResult));

4.總結

json_last_error這個函數很重要,這裏我整理了一些json_last_error返回值對應的錯誤信息,可以根據這些錯誤信息去網上搜索相應的解決方案:

  • 0 = JSON_ERROR_NONE      沒有錯誤發生
  • 1 = JSON_ERROR_DEPTH      到達了最大堆棧深度
  • 2 = JSON_ERROR_STATE_MISMATCH      無效或異常的 JSON
  • 3 = JSON_ERROR_CTRL_CHAR      控制字符錯誤,可能是編碼不對
  • 4 = JSON_ERROR_SYNTAX      語法錯誤
  • 5 = JSON_ERROR_UTF8      異常的 UTF-8 字符,也許是因爲不正確的編碼。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章