JMS 序列化程序反序列化对象的 ArrayCollection

JMS Serializer deserialize ArrayCollection of 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 with Objects 并且所有的键都被保留了下来。也许有人知道为什么第一种方法不起作用?

Jms 序列化程序有可能反序列化到 ArrayCOllection f 对象部分 @Type 此处:http://jmsyst.com/libs/serializer/master/reference/annotations

我找到的唯一解决方案是使用项目(ArrayCollection 类型)字段创建单独的 class。这是 class:

的 jms-serializer 定义
FooBundle\Entity\Cart:
    exclusion_policy: ALL
    properties:
        items:
            expose: true
            type: ArrayCollection<int, FooBundle\Entity\CartItem>