php中json_encode的[]與{}

我們在使用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數組,否則解析的爲對象格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章