Json常用注解

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)。

本文作者:Eureka98

本文链接:https://www.cnblogs.com/todayiswendy/p/16877521.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Eureka98  阅读(129)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起