0
我想使用symfony/serializer將我的實體序列化爲json。 我想要得到的東西像用symfony序列化程序錯誤序列化
{
"id" : "string",
"name" : "name here",
"admin": "admin_id"
}
但我總是最後一棵完整的樹 - 生成的JSON包含所有相關實體與它們之間的關係。我相信它必須是symfony/serializer的小任務,顯然是做錯了什麼,但是什麼?
CarbonNormalizer只是返回nesbot /碳對象的字符串表示形式。
這裏是我的控制器:
$data=$this->em->getRepository('Cpa:Cpa')->findAll();
$encoder = new JsonEncoder();
$normalizer = new GetSetMethodNormalizer();//object -same
$dateTimeNormalizer = new CarbonNormalizer();
$normalizer->setCircularReferenceHandler(function ($object) {
return $object->getId();
});
$this->serializer = new Serializer([$dateTimeNormalizer, $normalizer], [$encoder]);
$data = $this->serializer->serialize($data, 'json', ['groups' => ['show'], 'enable_max_depth' => true]);
return new JsonResponse($data, $code, [], true);
而且我的實體:
<?php
namespace Domain\Cpa\Models;
use Domain\Offer\Models\CpaOffer;
use Domain\User\Models\User;
use Ramsey\Uuid\Uuid;
class Cpa
{
/** @var string */
private $id;
/** @var string */
private $name;
/** @var User */
private $admin;
/** @var CpaOffer[] */
private $offers;
/**
* Cpa constructor.
* @param string $name
* @param User $admin
*/
public function __construct($name, User $admin)
{
$this->id = Uuid::uuid4()->toString();
$this->name = $name;
$this->admin = $admin;
$this->offers = [];
}
/**
* @return string
*/
public function getId(): string
{
return $this->id;
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @return User
*/
public function getAdmin(): User
{
return $this->admin;
}
/**
* @return CpaOffer[]
*/
public function getOffers()//: array
{
return $this->offers;
}
}
serialization.yml
Domain\Cpa\Models\Cpa:
attributes:
id:
groups: ['show']
name:
groups: ['show']
admin:
groups: ['show']
謝謝,凱文。有沒有辦法將配置的序列化器注入到我的服務/控制器中? '/the/path/to/yourfile.yaml' - 是否是serialization.yml的路徑? – svgrafov