【问题标题】:JMS Serializer Exclude Entity field in Symfony2 ControllerSymfony2 控制器中的 JMS 序列化程序排除实体字段
【发布时间】:2014-04-19 20:17:57
【问题描述】:

我有一个我想在我正在开发的 JSON API 中公开的实体,问题是在这个特定的控制器中,只有一个我不想公开的字段。有没有办法从控制器内部的序列化中排除它?

我知道我可以注释我的实体,所以序列化程序只是通过该字段,但在所有其他情况下会发生什么?这确实是个例外。

【问题讨论】:

    标签: json symfony jmsserializerbundle


    【解决方案1】:

    您可以将每个属性分配给一个组, 然后在序列化时在上下文中定义该组 来自控制器。

    您的实体:

    use JMS\Serializer\Annotations as Serializer;
    
    class Comment
    {
        /** @Serializer\Groups({"main", "secondary"}) */
        private $id;
    
        /** @Serializer\Groups({"main", "secondary"}) */
        private $title;
    
        /** @Serializer\Groups({"main", "secondary"}) */
        private $name;
    
        /** @Serializer\Groups({"main"}) */
        private $email;
    
        /** @Serializer\Groups({"main", "secondary"}) */
        private $message;
    }
    

    然后在你的控制器中

    use JMS\Serializer\SerializationContext;
    
    $serializer->serialize(
        new Comment(),
        'json',
        SerializationContext::create()->setGroups(array('secondary'))
    );
    

    在此示例中,电子邮件字段从序列化数据中排除,但仅适用于名为 secondary 的组。您当然可以随意称呼这些组。

    【讨论】:

    • 换句话说...没有。
    猜你喜欢
    • 2015-03-16
    • 2016-07-25
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多