в контроллере Symfony У меня есть следующие функции:Symfony3 десериализации JSON не работает, как ожидалось
/**
*
* @Route("/test", name="post_test")
* @Method("POST")
*/
public function postTest(Request $request){
$normalizer = new GetSetMethodNormalizer();
$callback = function ($dateTime) {
return $dateTime instanceof DateTime ? $dateTime->format(DateTime::ISO8601) : '';
};
$normalizer->setCallbacks(array('datum' => $callback));
$encoder = new JsonEncoder();
$serializer = new Serializer(array($normalizer), array($encoder));
$test = $serializer->deserialize($request->getContent(),Test::class, 'json');
return new Response($test->getName().":".$test->getDatum());
}
Я пытаюсь сделать POST с помощью завиток с
curl -i -X POST http://127.0.0.1:8000/test -d '{"datum": "2016-12-20T09:01:41+0100", "name": "Alfons"}'
Payload выглядит следующим образом: { "имя": "Джон Доу", "ИГД": "2016-12-20T09: 01: 41 + 0100"}
класс, к которому должен JSON сериализации, как это:
class Test {
private $name;
private $datum;
public function getName(){
return $this->name;
}
public function setName($name){
$this->name = $name;
}
public function getDatum(){
return $this->datum;
}
public function setDatum($datum){
$this->datum = $datum;
}
}
My JSON получить десериализованный, что хорошо. Однако результатом являются две строки в Test.name и Test.datum. Я действительно хочу иметь строку в Test.name и объект DateTime в Test.datum.
По этой причине я ввел обратный вызов в функции выше. Однако обратный вызов никогда не вызывается.
Что я делаю неправильно?
С уважением
Оливер
Я предполагаю, что тело обратного вызова может быть неправильным. Но я заметил, что обратный вызов вообще не называется. –