проблема с преобразованием сущности в json с использованием jms_serializer - Symfony 4 - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать API для возврата json с помощью symfony 4, я создаю сущность, и она работает нормально, но она не преобразует данные для базы данных в json, поэтому Serializer из «Symfony \ Component \ Serializer \ Serializer» даетмне ошибка

 serialization for the format json is not supported

, поэтому я попробовал Jms_Serializer, но на официальном сайте они работают со старой версией Symfony, я установил пакет с

composer require jms/serializer-bundle   

этот код в контроллере

class ProduitsController extends AbstractController
    {
        /**
         * @Route("/api/produits/cuisine")
         */
        public function index()
        {
            $dc = $this->getDoctrine();

            $Produits=$dc->getRepository(Article::class)->findAll();

            $data= $this->get('jms_serializer')->serialize($Produits,'json');

            return new JsonResponse($data);

        }
    }

я получил эту ошибку: ServiceNotFoundException

Service "jms_serializer" not found: even though it exists in the app's 
container, the container inside "App\Controller\ProduitsController" is a
 smaller service locator that only knows about the "doctrine", "form.factory",
 "http_kernel", "parameter_bag", "request_stack", "router", 
"security.authorization_checker", "security.csrf.token_manager", 
"security.token_storage", "serializer", "session" and "twig" services. Try
 using dependency injection instead

простой json_encode () к результату даст мне пустой json

1 Ответ

0 голосов
/ 25 апреля 2019

Все нормально, работает нормально проблема была с классом AbstractController я меняю его на контроллер

class ProduitsController extends Controller
{
    /**
     * @Route("/api/produits/cuisine")
     */
    public function index()
    {
        $dc = $this->getDoctrine();
        $Produits=$dc->getRepository(Article::class)->findAll();
        $data= $this->get('jms_serializer')->serialize($Produits,'json');

        return new JsonResponse($data);

    }
}
...