Symfony JsonResponse与Serializer

Tap*_*kan 5 php symfony

我有一个小问题.也许有人有个主意.

我用以下方式使用Serializer.函数json_encode被应用两次的问题.

首先,当我调用$ serializer-> serialize($ post,'json');

第二次在$ response-> setData();

所以,解码我需要两次调用函数.

有任何想法吗?

$encoders = [
    new JsonEncoder()
];
$normalizer = new ObjectNormalizer();
$normalizer->setCircularReferenceHandler(function ($object) {
    return $object->getId();
});
$normalizers = [$normalizer];
$serializer  = new Serializer($normalizers, $encoders);

$response = new JsonResponse();
$response->setData([
    'status' => true,
    'data'   => $serializer->serialize($post, 'json')
]);

return $response;
Run Code Online (Sandbox Code Playgroud)

Sim*_*amp 8

要返回 jsonstring而不是array使用该JsonResponse::fromJsonString方法:

return JsonResponse::fromJsonString($serializer->serialize($data, 'json'));
Run Code Online (Sandbox Code Playgroud)


Mat*_*teo 7

对象被编码两次,因为您使用了jsonresponse,而是使用简单的响应.另外,编码整个数据,而不仅仅是其中的一部分.例如:

$responseData = [
    'status' => true,
    'data'   => $post
];

$response = new Response(
   $serializer->serialize($$responseData, 'json'),
   Response::HTTP_OK,
   ['Content-type' => 'application/json']
);

return $response:
Run Code Online (Sandbox Code Playgroud)

希望这有帮助