繁体   English   中英

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 的情况下,您没有最后一个参数,但您可以使用标准响应并指定内容类型:

    $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM