2015-10-28 1 views
2

J'ai une structure de données qui représente une table, des lignes et des cellules. Je dois sérialiser et désérialiser en JSON et XML. Comment puis-je configurer JMS sérialiseur sérialiser ce genre d'objet,Sérialisation d'un tableau bidimensionnel à l'aide de JMS Serializer

class Test { 
    public $data = [ 
     'row_one' => ['cell-11', 'cell-12'], 
     'row_two' => ['cell-21', 'cell-22'], 
    ]; 
} 

Dans ce XML:

<result> 
    <data> 
     <row index="row_one"> 
      <cell>cell-11</cell> 
      <cell>cell-12</cell> 
     </row> 
     <row index="row_two"> 
      <cell>cell-21</cell> 
      <cell>cell-22</cell> 
     </row> 
    </data> 
</result> 

Je l'ai déjà essayé d'utiliser l'objet qui représente une ligne avec l'annotation @Inline, il ne fonctionne pas désérialisation en JSON, les lignes sont vides.

Répondre

0

Enfin, j'ai réussi à (dé) sérialiser mon objet en utilisant un objet séparé pour chaque ligne.

Mon mapping ressemble à:

class Table 
{ 
    /** 
    * @\JMS\Serializer\Annotation\Inline 
    */ 
    private $rows = []; 

    public function __construct(array $rows) 
    { 
     $this->rows = $rows; 
    } 
} 

class Row 
{ 
    /** 
    * @\JMS\Serializer\Annotation\Inline 
    */ 
    private $values = []; 

    public function __construct(array $values) 
    { 
     $this->values = $values; 
    } 
} 

Je sérialiser mon objet en utilisant JMS sérialiseur:

echo $serializer->serialize(new Table([ 
    new Row(['cell-11', 'cell-12']), 
    new Row(['cell-21', 'cell-22']) 
]), 'json'); 

Malheureusement cette désérialisation approche ne fonctionne pas en raison du bug j'ai essayé de corriger ici - https://github.com/schmittjoh/serializer/pull/513