我正在尝试对PHP中的某些对象进行JSON编码,但是我遇到了一个问题:我想对由类私有成员保存的数据进行编码。我发现这段代码通过调用类似以下的编码函数来编码此对象:public function encodeJSON() { foreach ($this as $key => $value) { $json->$key = $value; } return json_encode($json); }但是,只有在我要编码的对象内部不包含其他对象的情况下,这才有效。我该如何不仅对“外部”对象进行编码,还对作为对象的任何成员进行编码?
3 回答
![?](http://img1.sycdn.imooc.com/533e4c3300019caf02000200-100-100.jpg)
呼如林
TA贡献1798条经验 获得超3个赞
序列化具有私有属性的对象的最佳方法是实现\ JsonSerializable接口,然后实现自己的JsonSerialize方法以返回需要序列化的数据。
<?php
class Item implements \JsonSerializable
{
private $var;
private $var1;
private $var2;
public function __construct()
{
// ...
}
public function jsonSerialize()
{
$vars = get_object_vars($this);
return $vars;
}
}
json_encode 现在将正确序列化您的对象。
- 3 回答
- 0 关注
- 467 浏览
添加回答
举报
0/150
提交
取消