我正在使用Symfony 5.1 ( PHP7.2 ),問題是實(shí)體序列化組注釋不起作用。這是我處理實(shí)體并嘗試序列化其內(nèi)容的方式:/** * Returns serialized list of articles * * @param Article[] $articles * @return string JSON string */public function serializeArticles(array $articles) : string{ $dateCallback = function ($innerObject, $outerObject, string $attributeName, string $format = null, array $context = []) { return $innerObject instanceof \DateTime ? $innerObject->format(\DateTime::ISO8601) : ''; }; $defaultContext = [ AbstractNormalizer::GROUPS => ['user'], AbstractNormalizer::CALLBACKS => [ 'createdAt' => $dateCallback, 'updatedAt' => $dateCallback ], AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => function ($articles, $format, $context) { return $articles->getId(); }, AbstractNormalizer::IGNORED_ATTRIBUTES => [ '__initializer__', '__isInitialized__', '__cloner__' ] ]; $JsonEncoder = new JsonEncoder(); $objectNormalizer = new ObjectNormalizer(null, null, null, null, null, null, $defaultContext) ; $serializer = new Serializer( [$objectNormalizer], [$JsonEncoder] ); $articles = $serializer->serialize($articles, 'json'); return $articles;}無論如何,連載小組不想工作。草案看起來我沒有使用序列化組。
1 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
看來您沒有將AnnotationsReader對(duì)象傳遞給 ObjectNormalizer 的第一個(gè)參數(shù)。您應(yīng)該更仔細(xì)地閱讀文檔。
use Doctrine\Common\Annotations\AnnotationReader;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
我認(rèn)為這應(yīng)該有幫助:)
- 1 回答
- 0 關(guān)注
- 113 瀏覽
添加回答
舉報(bào)
0/150
提交
取消