我正在寻找一种将 json_encode 用于对象数组的有效方法。我遇到的问题是我的对象都具有私有(private)属性(使用 getter 和 setter)并且 json_encode 不会将它们拉入。所以我为返回私有(private)变量的对象创建了一个 jsonSerialize 函数,但我不知道如何执行数组中每个对象的函数有效地。我可以使用循环为每个对象执行 jsonSerialize 函数,但我担心这可能太慢了。
class car
{
private $make, $model;
public function jsonSerialize()
{
return get_object_vars($this);
}
}
以 json 格式返回汽车列表的 Controller 函数
$cars = $db->getAllCars(); //returns an array of objects using fetchall
return json_encode($cars);
最佳答案
你不能对对象使用 json_encode,它写在手册中(http://php.net/manual/en/function.json-encode.php)
首先,您需要在您的对象中实现JsonSerializable 接口(interface)以实现您正在寻找的内容(http://php.net/manual/en/jsonserializable.jsonserialize.php)。
在您的情况下,您缺少接口(interface)声明。试试这个
class car implements JsonSerializable
{
private $make, $model;
public function jsonSerialize()
{
return get_object_vars($this);
}
}
关于php - json_encode 具有私有(private)属性的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34710347/