JMS Serializer:在运行时动态更改虚拟属性的名称

时间:2014-10-13 08:09:08

标签: symfony jmsserializerbundle jms-serializer

我使用JMS Serializer Bundle和Symfony2。我正在使用VirtualProperties。目前,我使用SerializedName注释设置了属性的名称。

 /**
 * @JMS\VirtualProperty()
 * @JMS\SerializedName("SOME_NAME")
 */
public function getSomething()
{
    return $this->something
}

是否可以在函数内动态设置序列化名称?或者是否可以使用Post / Pre序列化事件动态影响名称?

谢谢!

2 个答案:

答案 0 :(得分:0)

我不认为你可以直接这样做,但你可以通过拥有几个虚拟属性来完成类似的事情,每个可能的名称都有一个。如果名称与特定实体无关,请使该方法返回null,并在JMS配置中禁用空序列化。

答案 1 :(得分:0)

在您序列化对象的那一刻,请执行以下操作:

$this->serializer = SerializerBuilder::create()->setPropertyNamingStrategy(new IdenticalPropertyNamingStrategy())->build();

$json = $this->serializer->serialize($object, 'json');
dump($json);