【问题标题】:FOSRestbundle: Serialize public method as fieldFOSRestbundle:将公共方法序列化为字段
【发布时间】:2014-07-08 10:37:20
【问题描述】:

我有一个带有标准 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 或序列化程序自动执行此操作?

【问题讨论】:

    标签: rest symfony serialization fosrestbundle jmsserializerbundle


    【解决方案1】:

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

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

    【讨论】:

    • 正是我需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2015-04-29
    • 2014-08-05
    • 2018-03-31
    相关资源
    最近更新 更多