Json常用注解
@Data
@JsonIgnoreProperties(value = {"sex", "phone"})
public class User {
private String id;
private String name;
private String sex;
private String phone;
private String mail;
@JsonIgnore
private String address;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date regDate;
}
以上例子说明User类的sex和phone字段会被@JsonIgnoreProperties注解忽略。address字段会被@JsonIgnore注解忽略。regDate会按照@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)进行格式转。
@JsonIgnoreProperties
作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。
allowGetters,allowSetters一起用用来控制字段忽视是在序列化还是反序列化
allowGetters=true:字段允许序列化,反序列的时候忽略该字段
allowSetters=true:字段允许反序列化,序列化的时候忽略该字段
ignoreUnknown=true:反序列化的时候忽视未知的字段,解决字段无法对应实体类会报错json解析异常
@JsonIgnore
用于属性或者方法上(最好是属性上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解,一般标记在属性或者方法上,返回的json数据即不包含该属性。
@JsonFormat
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
pattern: 需要转换的时间日期的格式
timezone:将时间设置为东八区,避免时间在转换中有误差
可以在属性对应的get方法上,两种方式没有区别
@JsonSerialize
用于属性或getter方法,在序列化时嵌入自定义代码,例如限制double类型精确到两位数
需要使用 using 属性指定处理参数的类,该类需要继承 JsonSerializer 类,并重写 serialize()。
若使用了 Lombok 需要自己定义相应的 get 方法。
以将日期格式化为yy-mm-dd为例。
@JsonSerialize(using = CustomDateSerialize.class)
public Date getDate() {
return date;
}
@JsonDeserialize
用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize。
@JsonInclude
属性值为null的不参与序列化。例子:@JsonInclude(Include.NON_NULL)。
标签:常用,String,private,忽略,Json,注解,序列化,属性 From: https://www.cnblogs.com/todayiswendy/p/16877521.html