2017-07-27 2 views
0

J'ai sérialisé ArrayCollection avec des objets, tout est sérialisé en json avec jms/serializer-bundle.JMS Serializer désérialiser ArrayCollection d'objets

Quand je veux désérialiser ma collection avec les touches (il est important):

deserialize($data, 'ArrayCollection<int, FooBundle\Entity\Item>', 'json'); 

Je reçois tableau. Mais quand je fais nouvelle ArrayCollection avec des résultats:

new ArrayCollection(deserialize($data, 'ArrayCollection<int, FooBundle\Entity\Item>', 'json')); 

Tout va bien et je me ArrayCollection avec des objets et toutes les clés sont conservés. Peut-être que quelqu'un sait pourquoi la 1ère méthode ne fonctionne pas?

Jc sérialiseur a la possibilité de désérialiser en ArrayCollection f Objets section @Type ici: http://jmsyst.com/libs/serializer/master/reference/annotations

Répondre

0

La seule solution que j'ai trouvé était la création d'une catégorie distincte avec le champ des éléments (type ArrayCollection). Voici la définition de jms-serializer pour cette classe:

FooBundle\Entity\Cart: 
    exclusion_policy: ALL 
    properties: 
     items: 
      expose: true 
      type: ArrayCollection<int, FooBundle\Entity\CartItem>