我正在使用 Symfony 并有一个传入的 JSON 负载,如下所示:
[
{
"number": 1,
"description": "Test 1"
},
{
"number": 2,
"description": "Test 2"
},
{
"number": 3,
"description": "Test 3"
}
]
我有一个数据传输对象(DTO)定义如下:
<?php
class MyDto {
public function __constructor(
public readonly int $number,
public readonly int $description,
) {}
}
我的目标是将 JSON 对象数组直接映射到 Symfony 控制器中的 MyDto 对象数组。这是我当前的控制器方法:
public funtion index(#[MapRequestPayload] MyDto $dto) {
...
}
我正在尝试找到一种方法将 JSON 对象数组映射到 MyDto 对象数组,而不需要创建另一个 DTO 来将此数据包装在键下。 Symfony 中是否有内置或有效的方法来执行此操作?
您可能需要这个:https://symfony.com/doc/current/components/serializer.html
$myDtos = $this->deserializer->deserialize($jsonString, MyDto::class . '[]', 'json');
在此代码中,第二个参数
MyDto::class . '[]'
指定要将 JSON 字符串反序列化为 MyDto
对象数组。