【问题标题】:change name of property with objectNormalizer使用 objectNormalizer 更改属性名称
【发布时间】:2021-03-06 11:48:13
【问题描述】:

我的控制器上有如下功能,但我需要将返回的 Json 的字段名称更改为自定义名称。

 /**
 * @Route("/exportar-prefeituras", name="exportar_prefeituras", methods={"POST"})
 */
public function ajaxExportarPrefeituras():Response
{
  $retorno = $this->getDoctrine()->getRepository(Prefeitura::class)->findAll();

  $normalizer = [new ObjectNormalizer()];
  $encoder = [new JsonEncoder()];
  $serializer = new Serializer($normalizer, $encoder);
  
  return new JsonResponse($serializer->normalize($retorno));

}

有没有办法用一些参数来做到这一点?我已经看到了一些关于创建新的 nameConverter 函数的事情,比如this,但我想知道它是否可以以“更简单的方式”完成。

【问题讨论】:

    标签: php symfony serialization normalization


    【解决方案1】:

    我认为他们文档上的解决方案是您找到的更简单的方法。并且可以在以后重复使用,也可以添加多个“重命名”功能。

    如果您需要其他解决方案,您可以创建一个函数将 $retorno 复制到另一个变量并循环通过它来重命名键甚至设置值。

    您可以在此处查看答案:Renaming object keys name in PHP Laravel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      • 2017-12-26
      相关资源
      最近更新 更多