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);
}