使用 jms_serializer 将实体转换为 json 的问题 - Symfony 4
problem with converting a entity to json using jms_serializer - Symfony 4
我正在尝试用 symfony 4 制作一个 api 到 return 一个 json
我创建了一个实体,它工作正常,但它没有将数据库数据转换为 json
所以来自 "Symfony\Component\Serializer\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
没关系,它工作正常
问题出在 class 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);
}
}
我正在尝试用 symfony 4 制作一个 api 到 return 一个 json 我创建了一个实体,它工作正常,但它没有将数据库数据转换为 json 所以来自 "Symfony\Component\Serializer\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
没关系,它工作正常 问题出在 class 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);
}
}