我在symfony3.4上使用序列化程序。
我的代码如下所示。
$encoders = [new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$jsonContent = $serializer->serialize($place, 'json',[
'circular_reference_handler' => function ($object) {
return $object->getId();
}
]);
return new JsonResponse($place);
但是它返回这样的错误,
A circular reference has been detected when serializing the object of class "Proxies\__CG__\App\Entity\PlaceCat" (configured limit: 1)
它看起来circular_reference_handler
没有调用回调。
如何启用此回调?
在Symfony 3.4中,循环引用处理程序是通过方法 Normalizer::setCircularReferenceHandler(callable)
而不是序列化上下文选项设置的。
您需要对Symfony 3.4使用以下内容:
$encoder = new JsonEncoder();
$normalizer = new ObjectNormalizer();
$normalizer->setCircularReferenceHandler(function ($object) {
return $object->getName();
});
$serializer = new Serializer([$normalizer], [$encoder]);
从4.2版起
setCircularReferenceHandler()
不推荐使用:从Symfony 4.2版起不推荐使用该方法。请改用circular_reference_handler
上下文的键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句