我收到的有效载荷如下:
object
包装对象是动物实体,事件是属于事件实体的UUID的数组。这些事件表中可能存在也可能不存在。
我希望能够使用symfony序列化器将其序列化为Animal实体,如下所示:
{
"date": "2019-03-14 14:48:26 +0000",
"events": [
"E09FDE82-4CAA-4641-87AF-6C092D6E71C1",
"AE12A6BC-DA37-4C37-BF49-DD0CE096AE00"
],
"location": null
}
我想做的是在反序列化期间,我需要查找特定的密钥并对其进行迭代,创建新的Event(或获取现有的Event),并使用它们调用动物的二传手。
我看过symfony规范化器,但是我不认为这些是正确的事情?我做了这个,但不知道从这里去哪里
$serializer = $this->get("serializer");
if($request->getMethod() == Request::METHOD_POST) {
$data = $request->getContent();
$entity = $serializer->deserialize($data, $this->type, 'json');
...
...
根据文档,这是编辑现有值或添加新值的方式,但是我不知道如何告诉规范化者“嘿,当您看到此键时,您就可以做自己的事情”
任何帮助表示赞赏。
答案 0 :(得分:0)
在这里您需要一个Denormalizer
,尝试实现DenormalizerInterface
class EventNormalizer implements NormalizerInterface, DenormalizerInterface {
...
public function denormalize($data, string $type, string $format = null, array $context = [])
{
// retrieve your events from $data and return the object (Animal) with related events
// $this->entityManager->find($data['events'][0]) ...
}
public function supportsDenormalization($data, string $type, string $format = null)
{
// your code here
}
}