如何在json中获得西里尔符号?

  • 本文关键字:符号 json symfony
  • 更新时间 :
  • 英文 :


我使用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