FOSRestbundle:将公共方法序列化为字段

时间:2014-07-08 10:37:21

标签: rest symfony serialization fosrestbundle jmsserializerbundle

我有一个标准datetimetz字段的实体,带有标准的getter和setter:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date", type="datetimetz")
 */
private $date;

/**
 * Get date
 *
 * @return \DateTime
 */
public function getDate() {
    return $this->date;
}

/**
 * Set date
 *
 * @param \DateTime $date
 * @return ConsultationForm
 */
public function setDate($date) {
    $this->date = $date;
    return $this;
}

序列化这个工作正常,生成的JSON有一个字符串,表示日期:

date: "2014-07-05T09:53:45+0200"

但是,我想在我的实体中添加第二个方法,它返回与我的日期对象相对应的Unix时间戳:

/**
 * Get date as millis
 *
 * @return int
 */
public function getDateAsMillis() {
    return $this->date->getTimestamp();
}

我希望此方法的输出也可以在结果对象中编码为JSON字段:

dateAsMillis: 3423435252345232

如何指示FOSRestbundle或序列化程序自动执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以使用VirtualPropery注释(http://jmsyst.com/libs/serializer/master/reference/annotations#virtualproperty

/**
 * @JMS\VirtualProperty
 * @JMS\SerializedName("dateAsMillis")
 */ 
  public function getDateAsMillis() {
    return $this->date->getTimestamp();
  }