9

Symfony と FOSRestBundle を使用して RESTful アプリを作成しています。FOSRestBundle は、JMS シリアライザーを使用して、データを json 形式にシリアル化します。私はすべてが1つの小さな問題で機能しています。

これは私のエンティティクラスです

/**
 * 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

これは私が得るjsonです:

{
           "id": 5,
           "content": "zxcvzxcvzxc",
           "lat": 37.422005,
           "lon": -122.084095,
           "date": "2013-05-20T05:06:57+0100",
           "status": 0,
           "points": 0,
           "owner": 0
       }

私のエンティティでは、 $uuid は @Exclude アノテーションを持つ唯一のプロパティであり、期待どおりにはありませんが、 $sign プロパティも欠落しています。ご覧のとおり、@Expose アノテーションを $sign に付けましたが、何も変更していません。@ExclusionPolicy("all") を使用して、uuid を除くすべてを公開しようとしましたが、取得しています

Warning: json_encode(): recursion detected in E:\workspace\htdocs\tomalo\vendor\jms\serializer\src\JMS\Serializer\JsonSerializationVisitor.php line 29

PHPのバグであるため、いくつかの情報を見つけました

何が間違っていて、それを修正する方法はありますか?

4

2 に答える 2

7

の忘れられた解決策は私にとってFOSRestBundleはうまくいきませんでした。ここで解決策を見つけましたhttps://github.com/FriendsOfSymfony/FOSRestBundle/pull/480

serializerではなく、構成で section を使用しviewます。

fos_rest:
    serializer:
        serialize_null: true
于 2014-07-02T08:56:30.653 に答える