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数组,否则解析的为对象格式

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