2

我有一个具有 oneToMany 关系的实体,我可以使用获取关联的项目;

$this->getQueuedItems()

这将返回Doctrine\ORM\PersistentCollection对象,然后我将其传递给JMS Serializer,如下所示;

$serializer = $container->get('serializer');
$json = $serializer->serialize($this->getQueuedItems(), 'json');

但是$json使用var_dump()结果输出;

字符串(2)“[]”

这是错误的。那里有数据,因为如果我做完了foreach()$this->getQueuedItems()我就会得到数据。

如何使用 JMS Serializer 将Doctrine\ORM\PersistentCollection序列化为 JSON?

谢谢

4

1 回答 1

2

PersistentCollection 对象是一个迭代器聚合而不是一个数组。区别在于 Iterator 是一个可以迭代的对象,因此可能包含也可能不包含在任何时候序列化为数组所需的数据。

要将 Collection 序列化为 JSON,请尝试以下操作:

$serializer = $container->get('serializer');
$arr        = $this->getQueuedItems()->toArray();
$json       = $serializer->serialize($arr, 'json');

如果您对键不太在意,也可以使用getValues, 而不是toArray.

于 2013-07-23T15:53:05.040 回答