为什么这些杰克逊注释是必要的?
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() 方法,您将不需要注释
我正在进行 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() 方法,您将不需要注释