如何使用 MapRequestPayload 将 JSON 对象数组映射到 DTO 数组

问题描述 投票:0回答:1

我正在使用 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 中是否有内置或有效的方法来执行此操作?

php symfony
1个回答
0
投票

您可能需要这个:https://symfony.com/doc/current/components/serializer.html

$myDtos = $this->deserializer->deserialize($jsonString, MyDto::class . '[]', 'json');

在此代码中,第二个参数

MyDto::class . '[]'
指定要将 JSON 字符串反序列化为
MyDto
对象数组。

© www.soinside.com 2019 - 2024. All rights reserved.