Десериализовать вложенный JSON в сущность с помощью Symfony

Как я могу десериализовать photos коллекция в Photo лицо, использующее Symfony?

Вот мой JSON:

{
"id": 3,
"status": 1,
"title": "sometitle",
"agency": {
"id": 1,
"name": "AgencyName",
...
"created_at": "-0001-11-30T00:00:00+01:00",
"updated_at": "-0001-11-30T00:00:00+01:00"},
"price": "123123",
...
"created_at": "-0001-11-30T00:00:00+01:00",
"updated_at": "-0001-11-30T00:00:00+01:00",
"photos": [
{
"id": 1,
"path": "img1.jpg",
"created_at": "2018-04-05T15:29:47+02:00",
"updated_at": "2018-04-05T15:29:47+02:00"},
{
"id": 2,
"path": "img2.jpg",
"created_at": "2018-04-05T15:35:28+02:00",
"updated_at": "2018-04-05T15:35:28+02:00"}
]
}

Как мне указать в Photo Сущность, что он должен использовать коллекцию как много?

Это не работает:

\Entity\Photo.php
/**
* @ORM\ManyToOne(targetEntity="House", inversedBy="photos")
*/
private $house;

\Entity\House.php
/**
* @ORM\OneToMany(targetEntity="Photo", mappedBy="house")
*/
private $photos;

Когда я называю это на мой взгляд:

{% for photo in house.photos %}
<li>{{ photo.path }}</li>
{% endfor %}

Он выбрасывает исключение и пытается отправить другой запрос GET на другой маршрут в API вместо использования вложенной коллекции.

0

Решение

Вы можете использовать Symfony Serializer Component: https://symfony.com/doc/3.4/components/serializer.html

пример:

$house = $serializer->deserialize($json, House::class, 'json');
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]