使用Symfony的序列化程序库在子对象中使用值

时间:2019-03-07 20:25:57

标签: json symfony serialization

我正在独立使用https://jmsyst.com/libs/serializer,而不是与Symfony一起使用。我有以下两个实体类,其中SomePropertyMyEntity的子对象:

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定义序列化,它们都与以下内容有些相似,但是它们导致包含idname而不包含{{1} }。

mySubproperty

这是如何完成的?谢谢

1 个答案:

答案 0 :(得分:1)

如果不是您在其他地方使用的字段,请使用@VirtualProperty注释。如果使用它,请在@Exclude上添加getSomeProperty()并添加一个具有其他名称的虚拟属性。

    /**
     * @Serializer\VirtualProperty()
     */
    public function getSomeProperty()
    {
        return $this->getSomeSubProperty();
    }