我使用JMS Serializer Bundle和Symfony2。我正在使用VirtualProperties。目前,我使用SerializedName注释设置了属性的名称。
/**
* @JMS\VirtualProperty()
* @JMS\SerializedName("SOME_NAME")
*/
public function getSomething()
{
return $this->something
}
是否可以在函数内动态设置序列化名称?或者是否可以使用Post / Pre序列化事件动态影响名称?
谢谢!
答案 0 :(得分:0)
我不认为你可以直接这样做,但你可以通过拥有几个虚拟属性来完成类似的事情,每个可能的名称都有一个。如果名称与特定实体无关,请使该方法返回null,并在JMS配置中禁用空序列化。
答案 1 :(得分:0)
在您序列化对象的那一刻,请执行以下操作:
$this->serializer = SerializerBuilder::create()->setPropertyNamingStrategy(new IdenticalPropertyNamingStrategy())->build();
$json = $this->serializer->serialize($object, 'json');
dump($json);