Symfony序列化程序不能与--no-dev一起使用

时间:2017-10-23 18:00:48

标签: php symfony deserialization serializer symfony-components

我正在使用symfony序列化程序。但是,如果我使用--no-dev标志安装composer包,它会反转为数组数组中应该是对象数组的数据。

这是序列化:

$result = $this->get('serializer')->deserialize(
    $request->getContent(),
    InputDto::class,
    'json'
);

对于反序列化,我在DTO中使用注释。

这就是DTO中对象数组的“字段”外观:

/**
 * @var OrderItemDto[]|Collection
 */
private $items = [];

2 个答案:

答案 0 :(得分:2)

基于代码:

https://github.com/symfony/serializer/blob/master/Encoder/JsonDecode.php#L84

如果您将选项 json_decode_associative 传递为false

$result = $this->get('serializer')->deserialize(
    $request->getContent(),
    InputDto::class,
    'json',
    ['json_decode_associative' => false]
);

不应该尝试将其转换为数组。

http://php.net/manual/en/function.json-decode.php

答案 1 :(得分:1)

要使对象分段工作,您需要添加到app/config/config.ymlframework部分的下一行:

property_info:
    enabled: true