Symfony 将 JMS 序列化程序与 JsonResponse 结合使用
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,你没有最后一个参数,但你可以使用标准 Reponse 并指定内容类型:
$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 应用程序中,在控制器上调用 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,你没有最后一个参数,但你可以使用标准 Reponse 并指定内容类型:
$response->headers->set('Content-Type', 'application/json');
对于 Symfony 4+,如果 autowire = true
在 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);
}