用于序列化的PHP数组对象

时间:2017-11-22 06:46:51

标签: php arrays json serialization

我正在尝试将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的解决方案。任何帮助。

1 个答案:

答案 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字符串,其中包含我们的新方法返回的内容。