php - Symfony JsonResponse 与序列化器

标签 php json 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;

最佳答案

该对象被编码两次,因为您使用了 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/

相关文章:

php - file_get_html 显示对未定义函数的 fatal error 调用

php - 如果 WooCommerce 单一产品中的内容为空,则隐藏自定义产品选项卡

java - 如何根据 Json 文件创建列表列表

javascript - React - 如何从 fetch POST 获取异步数据

php - 如何使用 PHP 更有效地将 csv 文件导入 MySQL 数据库?

php - 当我将root密码设置为 "no password"时,无法连接到数据库

javascript - 显示带有特殊字符的 json 响应

symfony - 尝试将 FOSUserBundle 安装到 Symfony2 时遇到问题

angularjs - Symfony 2 中 AngularJS 模板位置的最佳实践和新的 Angular Router?

php - fsockopen-如何检测消息结束?