我正在尝试将PHP数组对象转换为JSON。以下是PHP数组对象;
Array
(
[0] => Project\Man\Model\Branch Object
(
[id:protected] => 123456
[name:protected] => Parent Branch
[type:protected] => services
)
)
我尝试了序列化,但它不是一个友好的可读对象。
我尝试了以下内容:
json_encode
序列化
a:1:{i:0;O:23:"Project\Man\Model\Branch ":3:{s:5:"*id";s:36:"123456";s:7:"*name";s:20:"Parent Branch";s:7:"*type";s:8:"services";}}[{}]
我正在尝试一些可以获得JSON的解决方案。任何帮助。
答案 0 :(得分:2)
如果你只想要json,你应该只使用json_encode(),而不是serialize()。
由于您的对象属性设置为protected
,因此当您对对象进行编码时,它们将无法使用,但会有一些额外的帮助。
这就是界面JsonSerializable发挥作用的地方。
您需要确保要编码的对象实现接口。然后,您需要在课程中添加jsonSerialize()
方法。
class Branch implements \JsonSerializable
{
protected $id;
protected $name;
protected $type;
// ... your class code
public function jsonSerialize()
{
// Return what you want to be encoded
return [
'id' => $this->id,
'name' => $this->name,
'type' => $this->type,
];
}
}
如果您现在通过json_encode()
传递此对象,您将获得一个json字符串,其中包含我们的新方法返回的内容。