Сериализатор Symfony с массивом объектовPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Сериализатор Symfony с массивом объектов

Сообщение Anonymous »

У меня есть 2 объекта DTO, и мне нужно преобразовать в них json:

Код: Выделить всё

class SomeDTO
{
public function __construct(
#[SerializedName('some_property')]
private string $someProperty,
#[SerializedName('some_other_property')]
private int $someOtherProperty,
) {
}

public function getSomeProperty(): string
{
return $this->someProperty;
}

public function setSomeProperty(string $someProperty): self
{
$this->someProperty = $someProperty;

return $this;
}

public function getSomeOtherProperty(): int
{
return $this->someOtherProperty;
}

public function setSomeOtherProperty(int $someOtherProperty): self
{
$this->someOtherProperty = $someOtherProperty;

return $this;
}
}
и

Код: Выделить всё

class ArrDTO
{
/**
* @param SomeDTO[] $arr
*/
public function __construct(
private array $arr
) {
}

/**
* @return SomeDTO[]
*/
public function getArr(): array
{
return $this->arr;
}

/**
* @param SomeDTO[] $arr
* @return $this
*/
public function setArr(array $arr): self
{
$this->arr = $arr;

return $this;
}
}
Итак, свойство ArrDTO::$arr представляет собой массив объектов SomeDTO.
И у меня есть такой json, который имеет ту же структуру, что и ArrDTO:

Код: Выделить всё

$json = '{"arr":[{"some_property":"str","some_other_property":1},{"some_property":"str2","some_other_property":2}]}';
Цель — преобразовать этот $json в ArrDTO с помощью Serializer.
Этот код

Код: Выделить всё

use Symfony\Component\Serializer\SerializerInterface;
...
$arrDTO = $serializer->deserialize($json, ArrDTO::class, 'json');
дает мне ArrDTO, но с массивом [] (массив массивов) в свойстве $this->arr вместо SomeDTO[] (массив SomeDTO). Есть ли способ добиться этого с помощью сериализатора?


Подробнее здесь: https://stackoverflow.com/questions/790 ... f-entities
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»