1. 程式人生 > >json_decode() 返回null

json_decode() 返回null

在介面返回一個數組 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();