Loading

Jackson 常用注解总结

1、@JsonProperty

用于属性,以指定名称进行序列化(包括请求和响应)

@Data
public class UserInfo {

    @JsonProperty("userName")
    private String name;

    private GenderEnum gender;

    private String password;

    private Date birthday;
}

2、@JsonFormat

用于 Date 类型属性,在序列化时转换成指定格式。可以在 Spring 配置中添加默认格式,也可以在注解上指定

spring:
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss
@Data
public class UserInfo {

    @JsonProperty("userName")
    private String name;

    private GenderEnum gender;

    private String password;

    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
}

3、@JsonValue

用于枚举中,可以指定序列化枚举时使用的属性。配合 @JsonCreator 使用

在 Mybatis 中使用枚举可以参考这篇文章 如何在 MyBatis 中优雅的使用枚举

@Getter
@AllArgsConstructor
public enum GenderEnum {

    MALE(1, "男"),
    FEMALE(2, "女"),
    ;

    @JsonValue
    private int value;

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

posted @ 2022-05-07 16:44  多久会在  阅读(436)  评论(0)    收藏  举报