Java 在变量、getter和setter上设置@JsonProperty有什么区别?

Java 在变量、getter和setter上设置@JsonProperty有什么区别?,java,json,jackson,Java,Json,Jackson,我理解,如果键与变量不同,则使用JsonProperty将变量映射到JSON键 以下是我的POJO示例:- public class JsonProperty { @JsonProperty("studentId") //---------------variable private String id; @JsonProperty("studentId") //-----------

我理解,如果键与变量不同,则使用JsonProperty将变量映射到JSON键

以下是我的POJO示例:-

 public class JsonProperty {
        @JsonProperty("studentId")  //---------------variable
        private String id;
        
        @JsonProperty("studentId")  //---------------getter
        public String getIdValue() {
            return id;
        }
        
        @JsonProperty("studentId")  //---------------setter
        public void setIdValue(String id) {
            this.id = id;
        }
}
JSON字符串:{“studentId”:“so1”}

假设我们使用一些JDBC代码在DB中保存数据。我观察到以下变化,但无法准确理解其行为

  • 如果@JsonProperty(“studentId”)未用于变量,则使用getter和setter。 观察:注意事项存储在数据库中

  • 如果@JsonProperty(“studentId”)仅用于变量。 观察:{“idValue”:“so1”}存储在数据库中

  • 如果在setter或getter上使用@JsonProperty(“studentId”)。 观察:{“studentId”:“so1”}存储在数据库中


  • 那么,您能解释一下,当我们对变量、getter和setter使用JsonProperty时,实际发生的行为是什么吗?

    最简单的解释之一是: @JsonProperty(name),告诉Jackson ObjectMapper将JSON属性名称映射到带注释的Java字段的名称。

    重复的。不同注释之间有优先顺序