Я использую 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
, но не mySubproperty
.
<?xml version="1.0" encoding="UTF-8" ?>
<serializer>
<class name="NS\App\Domain\Entity\MyEntity">
<xml-namespace prefix="atom" uri="http://www.w3.org/2005/Atom"/>
<property name="id"/>
<property name="name"/>
<virtual-property
method="getSomeProperty"
access-type="public_method"
accessor-getter="getSomeSubProperty"
serialized-name="mySubproperty"
/>
</class>
</serializer>
Какэто сделано?Спасибо