我正在独立使用https://jmsyst.com/libs/serializer,而不是与Symfony一起使用。我有以下两个实体类,其中SomeProperty
是MyEntity
的子对象:
class MyEntity {
private $id, $name, $some_property;
public function getId() {return $this->id;}
public function getName(){return $this->name;}
public function getSomeProperty(){return $this->some_property;}
}
class SomeProperty {
private some_sub_property;
public function getSomeSubProperty(){return $this->some_sub_property;}
}
我可以成功执行对象的默认序列化,从而导致以下JSON:
{
"id":123,
"name":"foo",
"some_property" : {
"some_sub_property: "bar"
}
}
但是,我希望在SomeProperty
子对象中包含与MyEntity
中其他属性相同级别的属性,例如:
{
"id":123,
"name":"foo",
"mySubproperty": "bar"
}
我尝试了约一百种XML定义序列化,它们都与以下内容有些相似,但是它们导致包含id
和name
而不包含{{1} }。
mySubproperty
这是如何完成的?谢谢
答案 0 :(得分:1)
如果不是您在其他地方使用的字段,请使用@VirtualProperty
注释。如果使用它,请在@Exclude
上添加getSomeProperty()
并添加一个具有其他名称的虚拟属性。
/**
* @Serializer\VirtualProperty()
*/
public function getSomeProperty()
{
return $this->getSomeSubProperty();
}