1. 程式人生 > 其它 >Jackson 常用註解總結

Jackson 常用註解總結

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;
}