Jackson 常用註解總結
阿新 • • 發佈:2022-05-07
0、Jackson的依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.1</version>
</dependency>
1、@JsonProperty
用於屬性,在序列化時轉換成指定名稱
用例:
@Data public class UserInfo { @JsonProperty("userName") private String name; private GenderEnum gender; private String password; private Date birthday; }
2、@JsonFormat
用於 Date 型別屬性,在序列化時轉換成指定格式
@Data
public class UserInfo {
@JsonProperty("userName")
private String name;
private GenderEnum gender;
private String password;
@JsonFormat(timezone = "GTM+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
}
3、@JsonValue
用於列舉中,可以指定序列化列舉時使用的屬性。配合 @JsonCreator 使用
@Getter @AllArgsConstructor public enum GenderEnum { MALE(1, "男"), FEMALE(2, "女"), ; private int value; @JsonValue private String desc; @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public static GenderEnum getByValue(int value) { for (GenderEnum genderEnum : values()) { if (genderEnum.getValue() == value) { return genderEnum; } } return null; } }
4、@JsonIgnore 和 @JsonIgnoreProperties
前者用於屬性上,後者用於類上指定多個屬性。用來忽略指定屬性
@Data
@JsonIgnoreProperties(value = {"password"})
public class UserInfo {
@JsonProperty("userName")
private String name;
private GenderEnum gender;
@JsonIgnore
private String password;
@JsonFormat(timezone = "GTM+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
}