我正在寻找一种有效的方法来使用json_encode作为对象数组.我遇到的问题是我的对象都有私有属性(使用getter和setter)而json_encode不会将它们拉进去.所以我为一个对象创建了一个jsonSerialize函数,返回私有变量,但我不知道如何执行有效地为数组中的每个对象的功能.我可以使用循环为每个对象执行jsonSerialize函数,但我担心这可能太慢了.
class car
{
private $make, $model;
public function jsonSerialize()
{
return get_object_vars($this);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器功能以json格式返回汽车列表
$cars = $db->getAllCars(); //returns an array of objects using fetchall
return json_encode($cars);
Run Code Online (Sandbox Code Playgroud)
小智 5
你不能将json_encode用于对象,它写在手册中(http://php.net/manual/en/function.json-encode.php)
首先,您需要在对象中实现JsonSerializable接口以实现您正在寻找的内容(http://php.net/manual/en/jsonserializable.jsonserialize.php).
在你的情况下,你错过了接口声明.试试这个
class car implements JsonSerializable
{
private $make, $model;
public function jsonSerialize()
{
return get_object_vars($this);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1827 次 |
| 最近记录: |