簡體   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