Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
serializador JMS. Nombre de etiqueta xml para matriz de objetos

Tengo algunos problemas para obtener la salida xml que espero usando el serializador jms y Symfony 3.

Tengo una entidad llamada "referencia". Usando la anotación @XmlRoot("referencia") y devolviendo un solo objeto, la salida xml de fos rest bundle es la esperada:

 <reference> <id>1</id> <title>Title 1</title> </reference>

Pero si saco una matriz de los mismos objetos (devueltos por el método findAll() de las doctrinas), obtengo esto:

 <result> <entry> <id>1</id> <title>Title 1</title> </entry> <entry> <id>2</id> <title>Title 2</title> </entry> <entry> <id>3/id> <title>Title 3</title> </entry> </result>

La etiqueta se llama <entry> pero me gustaría lograr esto:

 <result> <reference> <id>1</id> <title>Title 1</title> </reference> <reference> <id>2</id> <title>Title 2</title> </reference> <reference> <id>3/id> <title>Title 3</title> </reference> </result>

(No sé cómo usar @XmlList en este caso, porque no tengo una entidad principal que contenga los elementos de referencia...)

¡Gracias!

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En primer lugar, su XML esperado no está bien formateado para mí. La id debería ser un atributo en su lugar. El siguiente ejemplo lo hace. Ver el resultado en la parte inferior. Si desea más ejemplos, consulte los enlaces a continuación que le enseñarán mucho.

  • Validación, serialización y asignación de solicitudes XML a clases modelo
  • Validación, serialización y mapeo de solicitudes json y XML para modelar clases

Resultado

 namespace Application/YourBundle/Model; use Application/YourBundle/Model/Reference; use JMS\Serializer\Annotation as Serializer; /** * @Serializer\XmlRoot("result") */ class Result { /** * @var Reference[] * * @Assert\Valid(traverse="true") * * @Serializer\XmlList(inline=false, entry="reference") * @Serializer\Type("array<Application\YourBundle\Model\Reference>") */ public $references = []; }

Referencia

 namespace Application/YourBundle/Model; use JMS\Serializer\Annotation as Serializer; class Reference { /** * @var int * * @Serializer\Type("integer") * @Serializer\XmlAttribute */ public $id; /** * @var string * * @Serializer\Type("string") * @Serializer\XmlValue */ public $title; }

Esta configuración debería darte:

 <result> <references> <reference id="1">Title 1</reference> <reference id="2">Title 2</reference> <reference id="3">Title 3</reference> </references> </result>

Si su respuesta fuera un objeto json, sería así:

 { "references": [ { "id": 1, "title": "Title 1" }, { "id": 2, "value": "Title 2" }, { "id": 3, "value": "Title 3" } ] }
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda