我使用CIRCULAR_REFERENCE_HANDLER
是为了避免循环引用。
$items = $this->entityManager->getRepository(OrderMainCategory::class)->findAll();
$encoder = new JsonEncoder();
$defaultContext = [
AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($object) {
return $object->getName();
},
];
$normalizer = new ObjectNormalizer(null, null, null, null, null, null, $defaultContext);
$serializer = new Serializer([$normalizer], [$encoder]);
$data = $serializer->serialize($items, 'json');
return $this->json($data);
但得到{u0022idu0022:1,u0022nameu0022:u0022\u0410\u043b\u043...
我知道JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
,但我不明白在这种情况下如何使用它
你可以这样做:
return $this->json(json_decode($data))
->setEncodingOptions(JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
因为在序列化之后$data
是一个字符串。而AbstractController的json()
方法默认只使用JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT
。