@JsonInclude、@JsonIgnore和@JsonFormat注解

一、@JsonIgnore:

1、作用:
在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
一般标记在属性或者方法上,在返回的json数据就不包含该属性

2、场景模拟:
将一个User序列化成Json数据并返回给前台,当我们在User的password和email属性上添加@JsonIgnore注解时,即使后台给这两个属性赋值了,返回前台的Json也不包含它们。

public class User {
    private String name;
    private String age;
    private String sex;
    @JsonIgnore           //添加JsonIgnore注解,返回时被忽略
    private String password;
    @JsonIgnore          //添加JsonIgnore注解,返回时被忽略
    private String email;
    public User() {}
 }

3、@JsonIgnore注解失效
如果注解失效,可能是因为你使用的是fastJson,尝试使用对应的注解来忽略字段,注解为:@JSONField(serialize = false),使用方法一样。

二、@JsonFormat:

作用:

  • Date和String的相互转化
  • 时差调整

使用场景:

  • 一般后台传值给前台时
  • 在我们中国来讲和我们的北京时间,会相差8个小时,因为我们是东八区(北京时间)。所以我们在格式化的时候要指定时区(timezone )

Date和String的自动转化

 import com.fasterxml.jackson.annotation.JsonFormat;
    /**
     * 后台返给前台时, 日期自动格式化
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birth;

指定时区:

/**更新时间  用户可以点击更新,保存最新更新的时间。**/
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;

三、@JsonInclude

作用:
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json,例如只有属性不为 null 时。

@JsonInclude(JsonInclude.Include.NON_NULL)         //类前面使用,如果为空则不反悔该属性json
public class SellerInfoEntity {

    private String id;
    private String username;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)   //属性前使用,如果为空则不返回该属性json
    private String password;
    private String openid;
    private Timestamp createTime;
    private Timestamp updateTime;

    public SellerInfoEntity() {
    }

    public SellerInfoEntity(String id, String username, String password, String openid) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.openid = openid;
    }
}

你可能感兴趣的:(Spring,Boot)