php使用json decode返回NULL

2021-09-01 23:09:37 字數 1228 閱讀 8951

php5.2以後自帶json_decode函式,但是對json文字串的格式要求非常嚴格。

很可能使用該函式得到的返回值是null

可以使用使用json_last_error()函式獲取到的返回值來幫助我們判斷出問題的原因。

其中如果提示錯誤json_error_syntax(syntax error),表示json串格式錯誤。

可以通過以下幾個方式排錯:

1. json字串必須以雙引號包含

$output = str_replace("'", '"', $output);

2. json字串必須是utf8編碼

$output = iconv('gbk', 'utf8', $output);

3.不能有多餘的逗號 如:[1,2,]

用正則替換掉,preg_replace('/,\s*([\]}])/m', '$1', $output)

4、不能有換行、製表符:

$jsonstr = '

}';//$ret=preg_replace("/\t/", " ", $ret);

//$jsonstr = preg_replace("/\n/", ' ', $jsonstr);

$jsonstr = str_replace("\n", ' ', $jsonstr);

//print_r($jsonstr);exit;

//$jsonstr = str_replace ('\n','', $jsonstr);

$jd = json_decode($jsonstr,true);

$errorinfo = json_last_error();

echo $errorinfo; //錯誤資訊會在客戶端的頁面顯示,錯誤**如下0-5

//print_r(json_error_depth);

print_r($jd);

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_utf8malformed utf-8 有缺陷的utf-8編碼特性,也可能是有誤的編碼 php 5.3.3

php使用json decode返回NULL

php5.2以後自帶json decode函式,但是對json文字串的格式要求非常嚴格。很可能使用該函式得到的返回值是null 可以使用使用json last error 函式獲取到的返回值來幫助我們判斷出問題的原因。其中如果提示錯誤json error syntax syntax error 表示...

php中json decode長整型傳輸問題

近日a專案儲存b專案中發過來的json串中的長整型時,發現兩個專案mysql中儲存的不一致 一共是18位長整型,但在最後兩位不一樣。a專案語言是php5.6.38,b專案是go a專案mysql該字段是varchar 255 b專案是bigint 64 起初認為是json decode時精度丟失問題...

PHP中json decode返回值為null

今天在呼叫介面獲取json資料轉碼的時候遇到了問題,記錄一下 成功獲取到了資料,但經過json decode解碼後卻為null 使用json last error 函式得到錯誤 3,在網上查到原因為返回的資料為utf 8有bom頭編碼,而php使用的是 無bom頭的utf 8編碼,所以解析錯誤,知道...