Я пытаюсь преобразовать данные из json в класс DTO. Я использую Symfony сериализатор .
Но когда я пытаюсь десериализовать. Он не анализирует тип из typed property
, я думаю, Symfony пока не поддерживает типизированное свойство формы десериализации. Это так? Должен ли я реализовать свой?
DTO:
class ElkUser
{
public string $partnerUuid;
public string $contractUuid;
public DealerInfo $dealerInfo;
}
class DealerInfo
{
public string $description;
public int $dealerId;
public string $dealerName;
public bool $enabled;
public string $registrationDate;
}
Конфигурация сериализатора:
$normalizers = [
new DateTimeNormalizer(),
new ObjectNormalizer(
null,
null,
null,
new ReflectionExtractor
),
];
$serializer new Serializer($normalizers, [new JsonEncoder()]);
Тестовый случай, когда выдают ошибку:
TypeError: Свойство Typed App \ Services \ CreditPilot \ ElkUser :: $ dealerInfo должен быть экземпляром App \ Services \ CreditPilot \ DealerInfo, используемый массив
$json = <<< JSON
{
"partnerUuid": "string",
"contractUuid": "string",
"dealerInfo": {
"dealerId": 0,
"dealerName": "string",
"enabled": true,
"registrationDate": "2020-03-10T12:49:08.367Z",
"contract": {
"contractNumber": "string",
"enabled": true,
"creationDate": "2020-03-10T12:49:08.367Z"
}
}
}
JSON;
$serializer->deserialize($json, ElkUser::class, 'json');