gpt4 book ai didi

php - json_encode 具有私有(private)属性的对象数组

转载 作者:行者123 更新时间:2023-12-02 06:54:23 24 4
gpt4 key购买 nike

我正在寻找一种将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com