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


浙公网安备 33010602011771号