我目前正在使用Symfony框架构建一个API。我已经做了足够的阅读来了解如何使用序列化组件,并为我的实体构建了一些自定义标准化器。目前,它的工作方式是:在Symfony中将JSON转换为Doctrine实体
JSON - >阵列(解码) - >用户实体(非规范化)
这是努力的过程,只要请求内容是用户,例如JSON表示:
{
"email": "[email protected]",
"plainPassword": "demouser",
"first_name" : "Demo",
"last_name" : "User"
}
甲用户实体在我的控制器使用下面的代码创建的:
$newuser = $this->get('api.serializer.default')->deserialize($request->getContent(), WebsiteUser::class, 'json');
然而,我想窝用户JSON以JSON的“数据”属性对象,这将让消费者通过额外的元数据与请求,例如:
{
"options": [
{
"foo": "bar"
}
],
"data": [
{
"email": "[email protected]",
"plainPassword": "demouser",
"first_name": "Demo",
"last_name": "User"
}
]
}
的主要问题这将导致的是,反序列化并不成功,因为JSON格式已更改。
我到目前为止考虑的唯一解决方案是对整个请求体进行json_decode,获取该数组的'data'元素,并将数据元素的内容传递给denormalizer(而不是解串器)。
有没有更好的方法来解决这个问题?