我有一个具有oneToMany关系的实体,我可以使用;
获取相关项目$this->getQueuedItems()
这将返回 Doctrine \ ORM \ PersistentCollection 对象,然后我将其传递给JMS Serializer,就像这样;
$serializer = $container->get('serializer');
$json = $serializer->serialize($this->getQueuedItems(), 'json');
但使用$json
输出var_dump()
会导致;
string(2)“[]”
哪个错了。那里有数据,因为如果我foreach()
超过$this->getQueuedItems()
,我会得到数据。
如何使用JMS Serializer将 Doctrine \ ORM \ PersistentCollection 序列化为JSON?
由于
答案 0 :(得分:2)
PersistentCollection对象是Iterator Aggregate而不是数组。区别在于Iterator是一个可以迭代的对象,因此可能包含或不包含在任何时候序列化到数组所需的数据。
要将Collection序列化为JSON,请尝试以下操作:
$serializer = $container->get('serializer');
$arr = $this->getQueuedItems()->toArray();
$json = $serializer->serialize($arr, 'json');
如果您对密钥不太满意,也可以使用getValues
,而不是toArray
。