Проблемы с попыткой закодировать сущность в json

Я пытаюсь закодировать объект Doctrine в виде строки JSON для отправки в виде ответа Ajax. Итак, я проверяю документ: Компонент Serializer

Я пытаюсь с этим кодом:

$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 не поддерживается

Любые идеи ?.


person ramiromd    schedule 13.11.2013    source источник


Ответы (2)


Используйте пакет сериализатора JMS

Документы можно найти здесь: http://jmsyst.com/bundles/JMSSerializerBundle.

person Pi Wi    schedule 13.11.2013

Ваша проблема связана с тем, что вы инвертировали и normalizers, и encoders.

Строка:
$serializer = new Serializer(array(new JsonEncoder()),array(new GetSetMethodNormalizer()));
должна быть:
$serializer = new Serializer(array(new GetSetMethodNormalizer()), array(new JsonEncoder()));

person KmeCnin    schedule 25.08.2017