Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

223
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!