我一直在使用 "jms/serializer": "0.13.*@dev" 来序列化我的对象。
我在 Zend Framework (2) 和 Doctrine 项目中使用它。
这是我的代码:
use JMS\Serializer\SerializerBuilder as SerializerBuilder;
(....)
public function getList() {
$em = $this->getEntityManager();
$repo = $em->getRepository('MyApp\Entity\Product');
$hydrator = new DoctrineHydrator($em);
$data = array();
foreach ($repo->findAll() as $found) {
$data[] = $hydrator->extract($found);
}
$serializer = SerializerBuilder::create()->build();
$jsonContent = $serializer->serialize($data, 'json');
$this->getResponseWithHeader()->setStatusCode(self::OK_200);
return new JsonModel($jsonContent);
}
但我收到此错误:
序列化数据不支持资源。路径:MyApp\Entity\FOO -> Doctrine\ORM\PersistentCollection -> MyApp\Entity\Product -> Doctrine\ORM\PersistentCollection -> DoctrineORMModule\Proxy__CG__\MyApp\MyApp\Brand
显然你不能序列化持久性集合。
我搜索了一下,发现了这个Symfony 相关问题。但是如何在独立的 Serializer 库中解决这个问题呢?
非常感谢。
编辑
这与 JMS 注释有什么关系吗?我应该使用某些注释来使其正常工作吗?