问题尝试将实体编码为json

时间:2013-11-13 12:27:31

标签: json serialization entity symfony-2.3

我尝试将Doctrine实体编码为JSON字符串,作为Ajax响应发送。 所以,我查看文档:{​​{3}}

我尝试使用此代码:

$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,没有支持   normalizer发现。

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

  

不支持json格式的序列化

任何想法?。

2 个答案:

答案 0 :(得分:1)

使用JMS Serializer Bundle

可在此处找到文档:http://jmsyst.com/bundles/JMSSerializerBundle

答案 1 :(得分:0)

您的问题来自倒置 normalizersencoders这一事实。

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