Сериализатор JMS десериализует ArrayCollection объектов

Я сериализовал ArrayCollection с объектами, все сериализовано в json с помощью jms/serializer-bundle.

Когда я хочу десериализовать свою коллекцию с ключами (это важно):

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

Я получаю массив. Но когда я создаю новый ArrayCollection с результатами:

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

Все в порядке, и я получаю ArrayCollection с объектами, и все ключи сохраняются. Может кто знает, почему 1-й способ не работает?

Сериализатор Jms имеет возможность десериализации в раздел ArrayCOllection f Objects @Type здесь: http://jmsyst.com/libs/serializer/master/reference/annotations


person kuba_ceg    schedule 27.07.2017    source источник


Ответы (1)


Единственное решение, которое я нашел, заключалось в создании отдельного класса с полем элементов (тип ArrayCollection). Вот определение jms-сериализатора для этого класса:

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