1、类型及处理方式

  • 对象
对象属性不含索引数组:转化为json对象,例如:
$data = new stdClass();
$data->test1 = "wx6e0a149cac849420";
$data->test2 = "wx6e0a149cac849420";
var_dump($data);
$json1 = json_encode($data);
var_dump($json1);
object(stdClass)#1 (2) {
 ["test1"]=>
 string(18) "wx6e0a149cac849420"
 ["test2"]=>
 string(18) "wx6e0a149cac849420"
}
string(59) "{"test1":"wx6e0a149cac849420","test2":"wx6e0a149cac849420"}"
对象属性含索引数组:出索引数组转化为数组,其余转化为json对象,可使用JSON_FORCE_OBJECT设置全部转化为json对象,例如:
$data = new stdClass();
$data->test1 = "wx6e0a149cac849420";
$data->test2 = array(
 "-l4FJZPNvd1VdDnuPMWQnRbEwvue8jCKPn-bOhOUKZSCuPoDZPT0sqCAHx90UK8L"
);
var_dump($data);
$json1 = json_encode($data);
var_dump($json1);
object(stdClass)#1 (3) {
 ["test1"]=>
 string(18) "wx6e0a149cac849420"
 ["test2"]=>
 string(18) "wx6e0a149cac849420"
 ["err"]=>
 array(1) {
 [0]=>
 string(64) "-l4FJZPNvd1VdDnuPMWQnRbEwvue8jCKPn-bOhOUKZSCuPoDZPT0sqCAHx90UK8L"
 }
}
string(134) "{"test1":"wx6e0a149cac849420","test2":"wx6e0a149cac849420","err":["-l4FJZPNvd1VdDnuPMWQnRbEwvue8jCKPn-bOhOUKZSCuPoDZPT0sqCAHx90UK8L"]}"

 

  • 数组
空数组:会转化为json数组
索引数组:会转化为json数组
关联数组:会转化为json对象
多维数组:依据上面两种类型的转化方式

2、结论

  1. 对象转为json对象,属性含索引数组则该属性转为json数组,可用JSON_FORCE_OBJECT参数设置转为json对象;

  2. 空数组、索引数组转为json数组,可用JSON_FORCE_OBJECT参数设置转为json对象;

  3. 关联数组转为json对象;

  4. 多维数组依据空数组/索引数组/关联数组的转化规则。

参考文章

json_encode函数说明

欢迎留言