我們在使用json_encode的時候有的時候生成的json爲[],有的情況會生成{}。這樣就造成我們在js中解析是不同的。
如果PHP數組的鍵都是數字或者空數組,那麼json_encode()返回一個數組形式的Json,如果PHP數組的鍵全是字符串。那麼json_encode()就會返回一個對象形式的Json。兩者在js中的調用是不同的。
事實上,只要在PHP數組的鍵中有一個字符串形式的鍵,那麼json_encode()就會返回對象形式的Json一個對象,而對象是不可能以數字作爲屬性名的。
$array = array("name" => "Eric","age" => 23);
echo json_encode($array);
輸出結果:{"name":"Eric","age":23} 爲對象形式
$array = array(0 => "Eric", 1 => 23);
echo json_encode($array);
輸出結果爲:["Eric",23]
$array = array();
echo json_encode($array);
輸出結果:[]
如果需要統一轉換爲對象類型,那就帶上JSON_FORCE_OBJECT參數。
如果不需要轉移中文,那就帶上JSON_UNESCAPED_UNICODE參數。
補充:
對應的json_decode()解析json字符串爲php變量:
json_decode($json_str,true);第二個參數的作用是如果爲true解析對象形式的json串爲php數組,否則解析的爲對象格式