symfony - 使用 Symfony Serializer 时如何解决 DateTimeNormalizer 问题

标签 symfony serialization

我在使用 Symfony Serializer 将 DateTime 对象规范化为字符串时遇到问题。

我正在使用以下代码:

protected function createResponse($data, Int $statusCode){

    $serializedData = $this->serialize($data);

    return new Response($serializedData, $statusCode, array(
        'Content-Type' => 'application/json',
    ));

}

protected function serialize($data, string $format = 'json')
{
    $encoders = [new JsonEncoder()];
    $normalizers = [new ObjectNormalizer(), new DateTimeNormalizer()];

    $serializer = new Serializer($normalizers, $encoders);

    return $serializer->serialize($data, $format);
}

我将包含 DateTimeInterface 变量的实体传递到上面定义的 createResponse 方法中,但日期未标准化为 RFC3339 格式。我错过了重要的一步吗?

我得到的示例输出:

"reportDate":{"timezone":{"name":"UTC","transitions":[{"ts":-9223372036854775808,"time":"-292277022657-01-27T08:29:52+0000","offset":0,"isdst":false,"abbr":"UTC"}],"location":{"country_code":"??","latitude":0,"longitude":0,"comments":""}},"offset":0,"timestamp":1551398400}

最佳答案

tl;dr 订单很重要。

尝试:

$normalizers = [new DateTimeNormalizer(), new ObjectNormalizer()];

代替:

$normalizers = [new ObjectNormalizer(), new DateTimeNormalizer()];

关于symfony - 使用 Symfony Serializer 时如何解决 DateTimeNormalizer 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827934/

相关文章:

php - 将键和值合并到 Twig 文件中的数组中

javascript - 使用 TinyMCE 和 Symfony3 实现 FileMangerBundle (artgris)

c# - 在枚举参数中使用短划线 (-) 字符

java - 为什么从抽象 Serialized 继承时会收到 InvalidClassException 'no valid constructor'?

android - 如何使用 Retrofit/Gson 反序列化 JSON 中相同类型但字段名称不同的对象列表?

c++ - 将包含 vector 和cv::Mat的结构存储到磁盘-C++中的数据序列化

c# - 哪个 Json 反序列化器呈现 IList<T> 集合?

Symfony2 : access same route in production as development

php - 在 Symfony2 中创建数据库

php - 从现有数据库生成实体时出现无效参数异常