如何仅通过一种方法通过 JMS/Serializer 公开 属性?

How to expose property by JMS/Serializer for only one method?

我在我的 Symfony 项目中使用 JMS 序列化器,我对此有疑问。我只想从实体公开 属性 以获取一种特定方法(一条路线),在其他情况下我不希望公开此 属性。如果有任何建议,我将不胜感激)

您可能可以使用属性上的 @Groups 注释来实现此目的,然后告诉序列化程序在您的控制器中序列化哪些组。

use JMS\Serializer\Annotation\Groups;

class BlogPost
{
    /** @Groups({"list", "details"}) */
    private $id;

    /** @Groups({"list", "details"}) */
    private $title;

    /** @Groups({"list"}) */
    private $nbComments;

    /** @Groups({"details"}) */
    private $comments;

    private $createdAt;
}

然后:

use JMS\Serializer\SerializationContext;

$serializer->serialize(new BlogPost(), 'json', SerializationContext::create()->setGroups(array('list')));

//will output $id, $title and $nbComments.

$serializer->serialize(new BlogPost(), 'json', SerializationContext::create()->setGroups(array('Default', 'list')));

//will output $id, $title, $nbComments and $createdAt.

更多信息here