当我使用 symfony 6.4 序列化器 6.4.11 时,有些事情很奇怪。我序列化的日期用双引号引起来...我怀疑该值编码了两次,但为什么?
这是代码:
$tmp = $value->format("Y-m-d H:i:s");
$value = $this->getSerializer()
->serialize($value, 'json', [DateTimeNormalizer::FORMAT_KEY => "Y-m-d H:i:s"]);
同样的问题,但未指定日期输出格式仅供参考...
知道出了什么问题吗? 谢谢你
在第一行代码中,您正确设置了日期格式:
$tmp = $value->format("Y-m-d H:i:s");
但是在第二行代码中,您将原始 DateTime 对象(存储在
$value
变量中)传递给序列化器:
$value = $this->getSerializer()
->serialize($value, 'json', [DateTimeNormalizer::FORMAT_KEY => "Y-m-d H:i:s"]);
这将执行以下操作:
DateTime
对象格式化为字符串格式 Y-m-d H:i:s
JSON
。因此它将用双引号引起来。如果您只想格式化日期,那么您可以简单地执行以下操作:
$date->format("Y-m-d H:i:s");
我不明白你为什么要使用
serialize
方法来进行如此简单的操作。
但是如果你仍然想使用序列化方法,你可以尝试使用关联数组进行序列化,就像这样:
$data = [
'date' => $value->format("Y-m-d H:i:s"),
// Other fields...
];
$jsonValue = $this->getSerializer()->serialize($data, 'json');