JMS Serializer反序列化对象的ArrayCollection

时间:2017-07-27 07:45:41

标签: symfony jmsserializerbundle symfony-3.3

我已经使用Objects序列化了ArrayCollection,所有内容都使用jms / serializer-bundle序列化为json。

当我想用密钥反序列化我的集合时(这很重要):

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

我得到阵列。但是当我使用结果创建新的ArrayCollection时:

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

一切都很好,我得到了带对象的ArrayCollection,并保留了所有键。也许有人知道为什么第一种方法不起作用?

Jms序列化程序可以反序列化为ArrayCOllection f Objects部分@Type here:http://jmsyst.com/libs/serializer/master/reference/annotations

1 个答案:

答案 0 :(得分:1)

我找到的唯一解决方案是创建具有项目(ArrayCollection类型)字段的单独类。以下是此类的jms-serializer定义:

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