json_decode() 返回null
阿新 • • 發佈:2019-02-15
在介面返回一個數組 echo json_encode($arr);獲取到的返回值是正確的json字串,但是使用json_decode($json,ture)轉為php陣列時,卻打印出null;確認陣列時urt-8格式;而且返回的json字串也是正確的json格式(複製到線上json轉碼顯示正常),但是轉不了陣列;
經過網上搜集,總結了一下幾個json_decode()返回null的情況;
1.字串應該是utf-8格式。
2.最後一個元素不能有逗號。
3.元素不能使用單引號
4.Bom頭問題,有些編輯器會自動加上不可見的bom頭字元,去除bom頭方法
$json = trim($json,chr(239).chr(187).chr(191));
二. 檢視json返回null還可以用 json_last.error(),返回數字來判別錯誤原因
$orders = json_decode($json_orders,true);
echo json_last_error();
三. TP框架下I方法接受的引數是經過處理的
tp框架中的I函式預設對post的引數進行了htmlspecialchars過濾
'DEFAULT_FILTER' => 'htmlspecialchars', // 預設引數過濾方法 用於I函式
所以在json_decode前要先進行htmlspecialchars_decode()處理
$json_address = I('address);
$json_address = htmlspecialchars_decode($json_address);
$address = json_decode($json_address,true);
echo json_last_error();