Wykonuję aplikację RESTful z Symfony i FOSRestBundle. FOSRestBundle używa JMS Seriazlizer do serializowania danych do formatu json. Mam wszystko, co pracuję z jednym małym problemem.Serializator JMS nie ujawnia żadnej właściwości
To moja klasa Entity
/**
* Post
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Tomalo\AdminBundle\Entity\PostRepository")
* @ExclusionPolicy("none")
*/
class Post
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="content", type="text")
* @Assert\NotBlank()
*/
private $content;
/**
* @var float
*
* @ORM\Column(name="lat", type="float")
* @Assert\NotBlank()
*/
private $lat;
/**
* @var float
*
* @ORM\Column(name="lon", type="float")
* @Assert\NotBlank()
*/
private $lon;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @var string
*
* @ORM\Column(name="sign", type="string", length=50, nullable=true)
* @Expose
*/
private $sign;
/**
* @var integer
*
* @ORM\Column(name="status", type="integer")
*/
private $status=0;
/**
* @var integer
*
* @ORM\Column(name="points", type="integer")
*/
private $points=0;
/**
* @var string
*
* @ORM\Column(name="uuid", type="string", length=43)
* @Assert\NotBlank()
* @Exclude
*/
private $uuid;
private $owner;
//get/set method continue
a to json uzyskać:
{
"id": 5,
"content": "zxcvzxcvzxc",
"lat": 37.422005,
"lon": -122.084095,
"date": "2013-05-20T05:06:57+0100",
"status": 0,
"points": 0,
"owner": 0
}
W moim podmiot $ UUID to jedyna nieruchomość haveing @Exclude adnotacji i nie ma co oczekiwać, ale nie ma również właściwości znaku $. Jak widzisz, wstawiam adnotację @Expose do znaku $, ale nic nie zmieniłem. Próbowałem za pomocą @ExclusionPolicy („wszystko”) i odsłonić wszystko z wyjątkiem UUID ale jestem coraz
Warning: json_encode(): recursion detected in E:\workspace\htdocs\tomalo\vendor\jms\serializer\src\JMS\Serializer\JsonSerializationVisitor.php line 29
znalazłem pewne informacje, jak to niektórzy php bug
jakiś pomysł co jest nie tak i jak to naprawić to?
polecam Ci konfigurowania serializacji i doktryny mapowania w oddzielne pliki (XML/yml) zamiast korzystania z adnotacji, ponieważ pozwala na łatwiejsze rozszerzanie i wiązanie dziedziczenia, ale jest to kwestia osobistych preferencji ... tylko moje kilka centów. – nifr
Dzięki, rozważę. To naprawdę miłe Symfony oferuje kilka formatów do pisania konfiguracji i innych rzeczy, ale jest to miecz obosieczny. – Gustek