@JsonProperty字段以及getter / setter的注释

我继承了在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

以上是 @JsonProperty字段以及getter / setter的注释 的全部内容, 来源链接: utcz.com/qa/427439.html

回到顶部