Symfony序列化器不会反序列化json日期时间

时间:2019-02-05 16:16:52

标签: json symfony4 json-deserialization serializer

我在symfony 4.2中使用序列化来解码json并将一个实体保存到数据库中,问题是日期时间,当我反序列化symfony时出现一个错误,期望给出日期时间对象和字符串。

我检查了控件中所有的“ use”语句,以及所有带有property-info的配置,以使symfony识别json的所有字段并弄清楚它是什么。

链接到git项目:

docs

/**
* @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);
}

我要传递的杰森

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

使用反序列化方法应该将“ published_at”转换为日期时间以保存到数据库中,但是给我一个错误:“在属性路径“ published_at”处给出的“ DateTiemInterface”类型的期望参数,“ string”。

感谢您的时间

1 个答案:

答案 0 :(得分:0)

已解决

是我的json,json中的字段“ publishet_at”必须与类中的一样,这就像在数据库中一样。

{
 "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"
}