我有一个小问题。也许有人有想法。
我按以下方式使用 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;
最佳答案
该对象被编码两次,因为您使用了 jsonresponse,请改用简单的响应。此外对整个数据进行编码,而不仅仅是其中的一部分。例如:
$responseData = [
'status' => true,
'data' => $post
];
$response = new Response(
$serializer->serialize($$responseData, 'json'),
Response::HTTP_OK,
['Content-type' => 'application/json']
);
return $response:
希望对你有帮助
关于php - Symfony JsonResponse 与序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40073032/