- @JsonIgnoreProperties
此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
- @JsonIgnore
此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。
- @JsonFormat
此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
- @JsonSerialize
此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。
-----------------------------------------------------------------------------------------------------------------------------------------------------
@JsonIgnore 注解的定义
作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
如下一个实体父类
1import java.util.Date; 2 3import org.apache.commons.lang3.StringUtils; 4import org.hibernate.validator.constraints.Length; 5 6import com.fasterxml.jackson.annotation.JsonFormat; 7import com.fasterxml.jackson.annotation.JsonIgnore; 8import com.thinkgem.jeesite.common.utils.IdGen; 9import com.thinkgem.jeesite.modules.sys.entity.User; 10import com.thinkgem.jeesite.modules.sys.utils.UserUtils; 11 12/** 13 * 数据Entity类 14 * @author 盻神~ 15 * @version 2016-08-16 16 */ 17public abstract class DataEntity<T> extends BaseEntity<T> { 18 19 private static final long serialVersionUID = 1L; 20 21 protected String remarks; // 备注 22 protected User createBy; // 创建者 23 protected Date createDate; // 创建日期 24 protected User updateBy; // 更新者 25 protected Date updateDate; // 更新日期 26 protected String delFlag; // 删除标记(0:正常;1:删除;2:审核) 27 protected String codeNum; //编号 28 protected int codeFlag; //编号标记 29 30 public DataEntity() { 31 super(); 32 this.delFlag = DEL_FLAG_NORMAL; 33 } 34 35 public DataEntity(String id) { 36 super(id); 37 } 38 39 /** 40 * 插入之前执行方法,需要手动调用 41 */ 42 @Override 43 public void preInsert(){ 44 // 不限制ID为UUID,调用setIsNewRecord()使用自定义ID 45 if (!this.isNewRecord){ 46 setId(IdGen.uuid()); 47 } 48 User user = UserUtils.getUser(); 49 if (StringUtils.isNotBlank(user.getId())){ 50 this.updateBy = user; 51 this.createBy = user; 52 } 53 this.updateDate = new Date(); 54 this.createDate = this.updateDate; 55 } 56 57 /** 58 * 更新之前执行方法,需要手动调用 59 */ 60 @Override 61 public void preUpdate(){ 62 User user = UserUtils.getUser(); 63 if (StringUtils.isNotBlank(user.getId())){ 64 this.updateBy = user; 65 } 66 this.updateDate = new Date(); 67 } 68 69 @Length(min=0, max=255) 70 public String getRemarks() { 71 return remarks; 72 } 73 74 public void setRemarks(String remarks) { 75 this.remarks = remarks; 76 } 77 78 @JsonIgnore 79 public User getCreateBy() { 80 return createBy; 81 } 82 83 public void setCreateBy(User createBy) { 84 this.createBy = createBy; 85 } 86 87 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 88 public Date getCreateDate() { 89 return createDate; 90 } 91 92 public void setCreateDate(Date createDate) { 93 this.createDate = createDate; 94 } 95 96 @JsonIgnore 97 public User getUpdateBy() { 98 return updateBy; 99 } 100 101 public void setUpdateBy(User updateBy) { 102 this.updateBy = updateBy; 103 } 104 105 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 106 public Date getUpdateDate() { 107 return updateDate; 108 } 109 110 public void setUpdateDate(Date updateDate) { 111 this.updateDate = updateDate; 112 } 113 114 @JsonIgnore 115 @Length(min=1, max=1) 116 public String getDelFlag() { 117 return delFlag; 118 } 119 120 public void setDelFlag(String delFlag) { 121 this.delFlag = delFlag; 122 } 123 @JsonIgnore 124 public String getCodeNum() { 125 return codeNum; 126 } 127 128 public void setCodeNum(String codeNum) { 129 this.codeNum = codeNum; 130 } 131 @JsonIgnore 132 public int getCodeFlag() { 133 return codeFlag; 134 } 135 136 public void setCodeFlag(int codeFlag) { 137 this.codeFlag = codeFlag; 138 } 139 140 141 142 143}
当加上@JsonIgnore 注解之后, 如果此实体类需要被调用发送到前端、那么这些被加了注解的字段在序列化和反序列化的时候都会受影响。所以将会被忽略、也就是不再响应到前台。