我有一个小问题.也许有人有个主意.
我用以下方式使用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)
要返回 jsonstring
而不是array
使用该JsonResponse::fromJsonString
方法:
return JsonResponse::fromJsonString($serializer->serialize($data, 'json'));
Run Code Online (Sandbox Code Playgroud)
对象被编码两次,因为您使用了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)
希望这有帮助
归档时间: |
|
查看次数: |
3641 次 |
最近记录: |