112*_*ion 6 php serialization symfony
我正在尝试将数据从 json 转换为 DTO 类。我正在使用Symfony 序列化程序。
但是当我尝试反序列化时。它不解析类型 from 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;
}
Run Code Online (Sandbox Code Playgroud)
序列化器配置:
$normalizers = [
new DateTimeNormalizer(),
new ObjectNormalizer(
null,
null,
null,
new ReflectionExtractor
),
];
$serializer new Serializer($normalizers, [new JsonEncoder()]);
Run Code Online (Sandbox Code Playgroud)
给我错误时的测试用例:
TypeError : Typed property 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');
Run Code Online (Sandbox Code Playgroud)
PropertyInfo组件使用多个源(Doctrine 元数据、PHP 反射、PHPdoc 配置等)提取有关 PHP 类属性的信息。在 Symfony 5.1 中,我们改进了该组件,也可以从 PHP 类型属性中提取信息。
在此之前,您需要向序列化器提供一些信息,以便它能够推断类型。一个 PhpDoc 或一个类型化的 setter 就足够了。
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |