为什么这些杰克逊注释是必要的?

why are these Jackson annotations necessary?

我正在进行 REST 调用并使用 Jackson 来解析响应。

如果 JSON 属性和 Java 字段名称不匹配,我需要提供一个 @JsonProperty 注释。然而,在我用 Jackson 的早期版本编写的其他应用程序中,其中 JSON 和 Java 匹配不需要注释。

@JsonIgnoreProperties(ignoreUnknown = true)
public class Location {

    @JsonProperty(value="i")
    String id;

    // unless I include this annotation the name is not deserialised.
    @JsonProperty(value="name")
    String name;
    
    // etc.
}

为什么我需要指定那个看似多余的映射?

我正在使用 Maven 并且我的有效 pom 显示

 <jackson-bom.version>2.12.4</jackson-bom.version>

我指定

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.32</version>
</dependency>

Jackson 根据 class 的 getter 查找属性,而不是根据其字段查找属性,除非它们被显式注释。

定义一个 String getName() 方法,您将不需要注释