【发布时间】:2021-10-20 07:50:01
【问题描述】:
我现在有一个在 symfony 4.4 上运行的项目,它需要在几个端点中以 XML 形式返回数据。
所以我一直在尝试序列化一个包含来自另一个实体的对象数组的实体,就像这样
public class Ticket {
private string $uuid;
/** @var Product[]|array $products **/
private array $products;
}
以及产品类别:
public class Product {
private string $uuid;
private DateTime $startDate;
*... getters and setters...*
}
我希望回复是这样的:
<ticket>
<uuid>1234567890</uuid>
<products>
<product>
<uuid>PROD_CAM_1</uuid>
<startDate>2020-01-04</startDate>
</product>
<product>
<uuid>PROD_CAP_2</uuid>
<startDate>2019-04-21</startDate>
</product>
</products>
</ticket>
但我却得到:
<ticket>
<uuid>1234567890</uuid>
<product>
<uuid>PROD_CAM_1</uuid>
<startDate>2020-01-04</startDate>
</product>
<product>
<uuid>PROD_CAP_2</uuid>
<startDate>2019-04-21</startDate>
</product>
</ticket>
我的序列化程序配置没什么特别的,我在 services.yaml 中指定的唯一内容是,在日期时间上下文中:
Symfony\Component\Serializer\Normalizer\DateTimeNormalizer:
arguments:
$defaultContext:
datetime_format: 'Y-m-d'
我只是将序列化程序服务注入到我的控制器中,然后执行以下操作以转换为 xml:
$this->serializer->serialize($data,'xml',['xml_encoding' => 'utf-8']);
其中 $data 是一个 Ticket 数组
我错过了什么? symfony 文档没有多大帮助。
【问题讨论】:
标签: symfony