【问题标题】:PHP Array Object to Serialize要序列化的 PHP 数组对象
【发布时间】:2017-11-22 06:46:50
【问题描述】:

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

【问题讨论】:

  • 如果你只想要json,你应该只使用json_encode(),而不是serialize()
  • 但它给了我一个空的结果。[{}] @MagnusEriksson

标签: php arrays json serialization


【解决方案1】:

如果你只想要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字符串。

【讨论】:

    猜你喜欢
    • 2011-02-10
    • 2015-08-10
    • 2012-04-15
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 2017-07-06
    相关资源
    最近更新 更多