[英]Symfony use JMS Serializer with JsonResponse
在 Symfony 应用程序中,在控制器上调用JsonResponse()
时是否可以使用 JMS 序列化程序?
$response = new ApiResponse(ApiResponse::STATUS_SUCCESS);
return new JsonResponse($response); // <-- I would like to use the JMS serializer
如果是 symfony 3,你可以使用这个:
$json = $this->get("serializer")->serialize($response, 'json');
return new JsonResponse($json, 200, [], true);
在 symfony 2 的情况下,您没有最后一个参数,但您可以使用标准响应并指定内容类型:
$response->headers->set('Content-Type', 'application/json');
对于 Symfony 4+,如果autowire = true
,则可以以这种方式使用用于序列化的 DI
在 Symfony 4 中, autowire已经默认设置为true 。
use Symfony\Component\HttpFoundation\JsonResponse;
/**
* ... anything
*
* @return JsonResponse
*/
public action(SerializerInterface $serializer) {
return new JsonResponse($serializer->serialize($response, 'json'), 200, [], true);
}
而且由于 Symfony 5 可以简单地调用json
函数。
在底层它使用 symfony serializer
器服务。
public function index(): Response {
$data = ... some json data
return $this->json($data);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.