当前位置: 首页 > 知识库问答 >
问题:

Symfony2 JMS序列化程序添加自定义属性

雍宇定
2023-03-14

正如标题所述,我正在尝试将自定义属性添加到我返回的序列化对象中。

让我们用以下方法来介绍一个用户:

  • getFirstname、setFirstname

现在在序列化中,我想添加一个属性fullName: Firstname Lastname。

我的实体中有一个getter方法,如下所示:

/**
 * get name
 *
 * @return string
 */
public function getName()
{
    return $this->getFirstname()." ".$this->getLastname();
}   

我的序列化文件如下所示:

AppBundle\Entity\User:
    exclusion_policy: ALL
    properties:
        id:
            expose: false
        username:
            expose: true
            groups: [list, details]
        email:
            expose: true
            groups: [details]
        name:
            expose: true
            groups: [list, details]

我试过了

    name:
        expose: true
        groups: [list, details]
        access_type: public_method
        type: string
        serialized_name: fullName
        accessor:
            getter: getName

和其他变体,但我似乎不能得到它的权利。

注意:是的,我已清除缓存并重试

有人能告诉我我错过了什么吗?

提前感谢!

共有1个答案

陆啸
2023-03-14

由于您的全名根本不是一个属性,因此您必须定义一个虚拟属性:

AppBundle\Entity\User:
    exclusion_policy: ALL
    properties:
        # All properties but not name
    virtual_properties:
        getName:
            groups: [list, details]
            serialized_name: fullName
 类似资料:
  • easyopen序列化使用fastjson处理json,xstream处理xml。现在我们来自定义实现一个json处理: 新建一个类JsonFormatter,实现ResultSerializer接口 public class JsonFormatter implements ResultSerializer { @Override public String serialize(

  • 我在一个Kafka消息中使用了我自己的类,它有一堆字符串数据类型。 我想我需要编写自己的序列化器并将其提供给生产者属性?

  • 下面的代码再现了这个问题: 上面的代码不做其他注册“自定义”序列化程序的事情(只是委托回原始序列化程序),但它生成的JSON没有null属性: {“第一个”:“鲍勃”,“最后一个”:“巴克”} 我读过许多看似相关的SO文章,但没有一篇能让我找到解决方案。我尝试在序列化时显式地将映射器设置为,但没有成功。 我唯一的线索是JavaDoc for JsonSerializer中的一条注释: 注意:永远不

  • 问题内容: 我有一个对象,其中包含一些要序列化的不可序列化字段。它们来自我无法更改的单独API,因此使它们可序列化不是一种选择。主要问题是Location类。它包含我需要的四个可以序列化的东西,所有整数。如何使用read / writeObject创建可以执行以下操作的自定义序列化方法: 我怎样才能做到这一点? 问题答案: Java支持自定义序列化。阅读“自定义默认协议”部分。 去引用: 但是,有

  • 情况如下:我已经设法让Jackson反序列化以下通用 作为HTTP客户端,并使用exchange

  • 我有一个类,它通过实现中的和方法来实现自定义Kryo序列化程序(请参见下面的示例)。如何用Spark注册此自定义序列化程序? 现在在Spark: 不幸的是,Spark没有给我注册自定义序列化程序的选项。你知道有没有办法做到这一点?