2017-04-25 12 views
0

の配列のXMLタグ名は、私は、JMSシリアライザとsymfony 3JMSシリアライザ。オブジェクト

私は、エンティティと呼ばれている「参照」を使用して期待xml出力を取得し、いくつかのトラブルを持っています。 注釈@XmlRoot(「基準」)を使用し、1つのオブジェクトのみを返す予想されるように、FOS残り束のXML出力である:教義によって返される同じオブジェクトの

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

でも出力ならアレイ(findAll()方法)私はこれを取得:

<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> 

タグが<entry>と呼ばれているが、私はこれを達成したいと思います:

<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> 

(Iドン参照項目を保持している親エンティティを持っていないため、@XmlListの使用方法はわかりません)

ありがとうございました!

答えて

0

まず、あなたの期待されるXMLのフォーマットが正しくありません。代わりにidをアトリビュートにする必要があります。以下の例はそれを行います。一番下の結果を参照してください。より多くの事例が必要な場合は、以下をご覧ください。

結果

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 = []; 
} 

リファレンス

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; 
} 

このセットアップは、あなたを与える必要があります。

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

あなたの応答はJSONオブジェクトだった場合、それは次のようになります:

{ 
    "references": [ 
     { 
      "id": 1, 
      "title": "Title 1" 
     }, 
     { 
      "id": 2, 
      "value": "Title 2" 
     }, 
     { 
      "id": 3, 
      "value": "Title 3" 
     } 
    ] 
} 
+0

グレート、ありがとうございました! – user1915746

関連する問題