2

我尝试将 Doctrine 实体编码为 JSON 字符串,以作为 Ajax 响应发送。所以,我检查了文档:序列化器组件

我尝试使用此代码:

$em = $this->getDoctrine()->getManager();
// Get the entities repository
$sesiones_registradas = $em->getRepository('AuditBundle:AuditSession')->findAll();

// Instance the object
$serializer = new Serializer(array(new JsonEncoder()),array(new GetSetMethodNormalizer()));

// Convert only an item
foreach($sesiones_registradas as $sesion){
    echo $serializer->normalize($sesion,'json');
    break;
}
// Stop script
die();

最后的代码,失败说:

无法规范化 AppsManantiales\AuditBundle\Entity\AuditSession 类型的对象,找不到支持的规范化器。

如果更改错误消息是$serializer->normalize($sesion,'json')$serializer->serialize($sesion, 'json');

不支持 json 格式的序列化

有任何想法吗 ?。

4

2 回答 2

3

您的问题来自您将和都倒置的事实。normalizersencoders

行:
$serializer = new Serializer(array(new JsonEncoder()),array(new GetSetMethodNormalizer()));
必须是:
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array(new JsonEncoder()));

于 2017-08-25T21:27:35.973 回答
0

Use the JMS Serializer Bundle

The docs can be found here: http://jmsyst.com/bundles/JMSSerializerBundle

于 2013-11-13T14:50:44.850 回答