我尝试将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格式的序列化
任何想法?。
答案 0 :(得分:1)
使用JMS Serializer Bundle
答案 1 :(得分:0)
您的问题来自倒置 normalizers
和encoders
这一事实。
行:
$serializer = new Serializer(array(new JsonEncoder()),array(new GetSetMethodNormalizer()));
必须是:
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array(new JsonEncoder()));