大佬教程收集整理的这篇文章主要介绍了Symfony 将日期序列化为空数组,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 Symfony 5.2 制作一个 JsON REST API。其中一个 API 调用返回一个日期,但我注意到该日期始终被序列化为一个空数组 ([]
)。以下是我收到的回复的摘录:
{"count":1,"data":[{"ID": 6,"published_from":[],"published_until":[]}]}
其他字段如 ID
是正确的,但日期不正确。在数据库中,字段用日期填充。
我尝试使用默认 services.yaml
运行查询,结果相同。
这里是实体中的字段声明:
/**
* @ORM\column(type="datetiR_876_11845@e")
* @Groups({"base","updatable"})
*/
private $publishedFrom;
最后,为简洁起见,仍然进行了编辑,这里是相关的业务逻辑代码(例如:在控制器中):
$qb = $this->createqueryBuilder('p')
->anDWhere('p.store = :store')
->setParameter('store',$store_ID);
$paginator = new Paginator($qb,falsE);
$entity = ['count' => count($paginator),'data' => $paginator);
return $this->Json($entity,context: ['groups' => ['base']]);
看起来 Symfony\Component\serializer\normalizer\datetiR_876_11845@enormalizer
没有被默认使用,但我认为应该使用。
我很确定这只是配置问题,但我找不到任何线索。
经过一些调试,我发现 AbstractObjectnormalizer
的第 203 行两个日期都被空数组替换:
$data = $this->updateData($data,$attribute,$this->serializer->normalize($attributeValue,$format,$this->createChildContext($context,$format)),$class,$context);
感谢您的任何意见。
编辑:有关此错误的更多信息,请参阅我的回答。
好的,我找到了答案。即使在重用默认 services.yaml
并运行 bin/console c:c
之后,我的自定义 Denormalizer 仍然以某种方式加载。它不会覆盖 supportsnormalization
方法。在 AbstractNormalizer
存根中,这解析为 true。
我的解决方案是覆盖它:在我的非规范化器中,我添加了这个以防止它们被用于规范化:
public function supportsnormalization($data,String $format = null)
{
return false;
}
如果有人遇到这个非常具体的问题,我会留下这个问题。
编辑:我在重新启用我的 services.yaml 后意识到,snake_case 转换器重新启用了这个错误。我想这是出于同样的原因。我还没有找到解决方法。
以上是大佬教程为你收集整理的Symfony 将日期序列化为空数组全部内容,希望文章能够帮你解决Symfony 将日期序列化为空数组所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。