Php JMS序列化程序是否忽略具有访问者注释的排除策略?
所以我有一个类似这样的响应类(简化的代码片段): 排除策略将所有字段排除在序列化之外,除非它们通过Php JMS序列化程序是否忽略具有访问者注释的排除策略?,php,symfony,jmsserializerbundle,jms-serializer,Php,Symfony,Jmsserializerbundle,Jms Serializer,所以我有一个类似这样的响应类(简化的代码片段): 排除策略将所有字段排除在序列化之外,除非它们通过@Serializer\Expose显式公开并且数据组匹配 除了带有@Serializer\Accessor注释的字段外,这对所有字段都非常有效。无论组策略如何,始终包含这些字段。我在文档或任何其他报告中都找不到任何建议@Serializer\Accessor注释覆盖组策略的内容,也找不到在Accessor函数中手动检查数据组的方法 有没有办法做到这一点,或者我必须将所有访问器函数内联到响应构造函数
@Serializer\Expose
显式公开并且数据组匹配
除了带有@Serializer\Accessor
注释的字段外,这对所有字段都非常有效。无论组策略如何,始终包含这些字段。我在文档或任何其他报告中都找不到任何建议@Serializer\Accessor
注释覆盖组策略的内容,也找不到在Accessor函数中手动检查数据组的方法
有没有办法做到这一点,或者我必须将所有访问器函数内联到响应构造函数中?我试图避免使用一个巨大的100L+构造函数,但如果我不能排除某些字段,它就无法使用访问器注释…我从未使用过
访问器
注释,因此我不知道它不起作用的原因,但我可以建议您直接在函数上添加注释,将它们标记为虚拟属性:
/**
* @Serializer\ExclusionPolicy("all")
*/
class MyResponse
{
public $name;
/**
* @Serializer\VirtualProperty()
* @Serializer\SerializedName("name")
* @Serializer\Groups({"myGroup"})
*/
public function getMyName()
{
return 'Donald';
}
}
您是否尝试过使用
$serializer->serialize(new MyResponse(),'json',\JMS\serializer\SerializationContext::create()->setGroups(数组('Default'))代码>?
/**
* @Serializer\ExclusionPolicy("all")
*/
class MyResponse
{
public $name;
/**
* @Serializer\VirtualProperty()
* @Serializer\SerializedName("name")
* @Serializer\Groups({"myGroup"})
*/
public function getMyName()
{
return 'Donald';
}
}