【发布时间】:2018-04-28 13:06:20
【问题描述】:
我遇到了序列化程序与注释验证相结合的问题。 我有一个这样的json:
{
"name": "A name",
"company": {
"name": "A company name"
}
}
还有我的 DTO:
class DTO {
/**
* @var string
*
* @Assert\NotNull
*/
private $name;
/**
* @var Company
*
* @Assert\NotNull
*/
private $company;
public function getName(): string {
return $this->name;
}
public function setName(string $name) {
$this->name = $name;
}
public function getCompany(): Company {
return $this->company;
}
public function setCompany(Company $company) {
$this->company = $company;
}
}
// deserialization in controller
$data = $request->request->all();
$serializer->deserialize($data, DTO::class, 'json');
反序列化后,我得到了一个DTO 的对象,其属性name 设置正确,但company 是array,而不是Company 的对象。如果我删除对 Annotations 的验证反序列化是正确的。
文档: https://symfony.com/doc/current/components/serializer.html#deserializing-an-object
有什么想法吗?
【问题讨论】: