PHP使用json_encode()将数组转为json会得到一个json格式的字符串,如果就这样直接返回给前端,前端拿到的也只是一个字符串而不是对象,需要使用JSON.parse将字符串转为对象,但如果向json_encode()传递的是为stdClass对象前端可以直接获取对象而不需要使用JSON.parse转换。
如下

//需要使用JSON.parse转换
$array = [
    "name" => "Nroy",
    "website" => "https://nnnuo.com"
];
echo json_encode($array);

//不需要转换
$site = new stdClass()
$site->name = "Nroy"
$site->name = "https://nnnuo.com"
echo json_encode($array);

但是如果你的数据是数组格式的一个一个的实例化对象然后再赋值确实有点麻烦,以下两个方法你一定能用到

数组转stdClass对象

function array_to_object($arr){
    $object = new stdClass;
    foreach($arr as $key=>$value){
        $object->$key = $value;
    }
    return $object;
}

stdClass对象转数组

function object_to_array($object){
    $array = is_object($object) ? get_object_vars($object) : $object;
    foreach ($array as $key => $item)
    {
        $val = (is_array($item) || is_object($item)) ? object_to_array($item) : $item; 
        $array [$key] = $val; 
    }
    return $array ; 
}

PHPJSON

添加新评论