【问题标题】:JMS Serializer ignoring non-persisted propertyJMS 序列化程序忽略非持久属性
【发布时间】:2015-10-27 13:53:25
【问题描述】:

我一直在为我的一个 Symfony2/Doctrine 对象上的一个属性而苦苦挣扎,该对象没有保存在数据库中。它是一个对象数组,包含标签、键和值等属性,但即使它被定义为一个简单的数组数组,它​​也不会显示出来。

这里是在通常持久化的对象中定义数组的方式:

/*
* @Accessor(getter="getReceipt",setter="setReceipt")
* @Type("ArrayCollection<MyProject\ReceiptProperty>")
* @Expose
* @Groups({"details"})
*/
protected $receipt;

public function setReceipt($receipt) {
    $this->receipt = $receipt;
}

public function getReceipt() {
    return $this->receipt;
}

这是数组中对象的定义方式

/**
* @ExclusionPolicy("all")
*/
class ReceiptProperty extends APIObject {
    /**
    * @Type("string")
    * @Expose
    * @Groups({"basic"})
    */
    public $label;

    /**
    * @Type("string")
    * @Expose
    * @Groups({"basic"})
    */
    public $type;

    /**
    * @Type("string")
    * @Expose
    * @Groups({"basic"})
    */
    public $key;

    /**
    * @Expose
    * @Groups({"basic"})
    */
    public $value;

    public function __construct($data) {
        $this->label = $data['label'];
        $this->type = $data['type'];
        $this->key = $data['key'];
        $this->value = $data['value'];
    }
}

通过在使用 print_r 进行序列化之前直接打印对象,我可以看到数据在那里,但无论配置是什么,该字段都不会显示。

【问题讨论】:

标签: json symfony jmsserializerbundle


【解决方案1】:

为了帮助那些可能遇到类似问题的人,我的问题本质上是一个不正确的注释。

在第一个代码块中,您会注意到注释注释以 /* 开头

事实证明,JMS Serializer 不处理不以 /** 开头的 cmets,因此它忽略了我的命令。更新注释注释后,它按预期工作。总是小事……

【讨论】:

    猜你喜欢
    • 2016-02-03
    • 2012-01-05
    • 2016-02-08
    • 2016-05-17
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    相关资源
    最近更新 更多