Сериализатор Symfony не десериализует json datetime - PullRequest
0 голосов
/ 05 февраля 2019

Я использую serialize в symfony 4.2 для декодирования json и сохранения сущности в базе данных, проблема заключается в дате и времени, когда я десериализирую symfony, которая выдает мне ошибку, которая ожидает объект datetime и строку.

Я проверил все операторы "use" в моем элементе управления, а также весь конфиг с помощью свойства-info, чтобы позволить symfony распознать все поля json и выяснить, что это такое.

ссылка напроект git:

https://github.com/erethilclaw/lair_of_claw

/**
* @Route("admin/newPost", name="newPost", methods={"POST"})
*/
public function newPost( Request $request){
    /** @var  Serializer $serializer */
    $serializer = $this->get('serializer');
    $post = $serializer->deserialize($request->getContent(), 
    Post::class, 'json');

    $em = $this->getDoctrine()->getManager();
    $em->persist($post);
    $em->flush();

    return $this->json($post);
}

JSON, который я передаю

{
"title": "A third blog post!",
"published_at": "2018-07-01 12:00:00",
"content": "Hello there!",
"author": "Piotr Jura",
"slug": "a-third-blog-post"
}

с помощью метода десериализации, должен преобразовать значение «ключ-публикации» в дату и время длясохранить в базу данных, но выдает ошибку: «Ожидаемый аргумент типа« DateTiemInterface »,« строка », указанная в пути к свойству« ключ-публикации ».

Спасибо за ваше время

1 Ответ

0 голосов
/ 06 февраля 2019

решено

было моим json, поле "publishet_at" в json должно быть таким же, как в классе, и здесь, как в базе данных.

{
 "title": "A third blog post!",
 "published_at": "2018-07-01 12:00:00",
 "content": "Hello there!",
 "author": "Piotr Jura",
 "slug": "a-third-blog-post"
}

изменено для решенияпроблема.

{
 "title": "A third blog post!",
 "publishedAt": "2018-07-01 12:00:00",
 "content": "Hello there!",
 "author": "Piotr Jura",
 "slug": "a-third-blog-post"
}
...