当前位置: 首页 > 面试题库 >

@JsonProperty字段以及getter / setter注释

闻人凯泽
2023-03-14
问题内容

我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。

当前代码:

private String fileName;

@JsonProperty("FILENAME")
public String getFileName()
{
    return fileName;
}

@JsonProperty("FILENAME")
public void setFileName(String fileName)
{
    this.fileName = fileName;
}

现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码:

@JsonProperty("FILENAME")
private String fileName;

@JsonProperty("FILENAME")
public String getFileName()
{
    return fileName;
}

@JsonProperty("FILENAME")
public void setFileName(String fileName)
{
    this.fileName = fileName;
}

是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。

我已经编译并运行了代码,但是我不确定这是否会造成任何问题。有什么想法吗?


问题答案:

根据一些测试,我发现与属性名称不同的任何一个都会生效:

例如。考虑对您的情况进行一些修改:

@JsonProperty("fileName")
private String fileName;

@JsonProperty("fileName")
public String getFileName()
{
    return fileName;
}

@JsonProperty("fileName1")
public void setFileName(String fileName)
{
    this.fileName = fileName;
}

这两个fileName字段,方法getFileName,有正确的属性名称fileName,并setFileName具有不同的一个fileName1,在这种情况下,杰克逊将寻找一个fileName1在反序列化的点JSON属性,会创建一个名为属性fileName1的序列化的地步。

现在,在您的情况下,三个@JsonProperty都与默认属性名有所不同fileName,它只会选择其中一个作为attribute(FILENAME),并且三个中的任何一个都不相同,则将引发异常:

java.lang.IllegalStateException: Conflicting property name definitions


 类似资料:
  • 问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我

  • 我继承了在getter/setter上有@JSONProperty注释的特定位代码。这样做的目的是,当使用Jackson库序列化对象时,字段具有特定的名称。 当前代码: 我已经编译并运行了代码,但我不确定这是否会导致任何问题。对此有什么想法吗?

  • 我想完成但不明白它是如何工作的 使用这段代码,我想注释生成它们各自的setter和getter,这样我就可以使用像 编辑2013-10-25 我的目标是构建一个能够做到这一点的库,因为我太好奇了,想了解如何在内部工作,所以我将能够用这个特性来支持我的框架,因为jet只是一个小实用程序,但在未来我希望它能为我节省大量的工作,你可以在github WSD Android上看到

  • 利用 getter/setter 可以拦截操作对象的属性,在设置属性前或获取属性前做一些事情。 1. getter get语法将对象属性绑定到查询该属性时将被调用的函数。(MDN) // 语法 var 对象 = { get 属性名() { // 做一些事情 balabala return 值; } }; getter 在获取一个属性时被调用,同时返回 getter 的返回

  • Spring Roo有一个@RooJavaBean注释,它为非瞬态字段生成AsheJ getter和setter。问题是它也为瞬态字段生成它们。我在Asset.java中有这个: 我有以下Asset_Roo_JavaBean.aj: 即使一个字段是暂时的,我想您仍然可以使用getter和setter访问它,但是为什么文档会对gettersByDefault注释字段这样说呢 是否为此类中声明的每个非

  • 问题内容: 我不是PHP开发人员,所以我想知道在PHP中,使用纯OOP风格的显式getter / setters是否具有私有字段(我喜欢这样)是否更受欢迎: 或只是公共领域: 谢谢 问题答案: 您可以使用php magic methods __get and __set.