角色:序列化json时将忽略java bean的某些属性,序列化和反序列化都受影响。
用法:通常标记为属性或方法,返回的json数据不包含该属性。
场景模拟:
必须将将ListHistoryOrderBean转换为json格式的数据传递到前台。 但是,实体类的所有基本属性字段的值都存储在快照属性字段中。 此时,可以在业务层进行处理,并将快照属性字段的值分配给实体类中相应的基本属性字段。 最后,由于返回的json数据不包含这两个快照字段,因此如果将实体类注释为@JsonIgnore,则最后返回的json数据将包含goodsInfo和exxore
公共类历史学家bean {
//基本属性字段
私有字符串insuran tname;
私有字符串指示名称;
私有字符串指示价格;
私有字符串指示图片;
私有字符串指示限制;
//快照属性字段
@JsonIgnore
私有字符串代码信息; //快照基础知识
@JsonIgnore
隐私字符串扩展信息; //快照扩展属性信息
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4 .禁用评论:
如果注释无效,则表示您正在使用fastJson,因此您可能试图使用相应的注释忽略字段。 注释为@JSONfield(serialize=false ),使用方式相同。
朴素羊相关:
使用朴素羊的评论时,要注意自己定义的属性命名是否规范。
名字不正确的话就没有效果了。 (例如,Ename,Eage是不规范的名称。 “nameE”、“ageE”是规范的名字)我在这里掉30分钟的洞。 关于命名规则,大家一起搜索。 其实不要命名得太奇怪。
如果使用@JsonIgnore注释没有效果,请注意是否规范了属性名称
1,@JsonIgnoreProperties
此注释是类注释,在序列化json时会忽略java bean的某些属性,序列化和反序列化都受影响。
写法是将该标签标记为model类的类名,可以是多个属性,也可以是单一属性
在生成json时过滤name和age属性
@jsonignoreproperties({'name'},{'age'} )。
公共类用户{
私有字符串名称;
私密int age;
}
1
2
3
4
5
6
7
2,@JsonIgnore
此注释用于属性或方法,如果可能,用于属性,其工作方式与上面的@JsonIgnoreProperties相同。
生成json时不生成age属性
公共类用户{
私有字符串名称;
@JsonIgnore
私密int age;
}
3,@JsonFormat
此注释用于属性或方法,可以方便地将Date类型直接转换为所需的模式(@ JSON format (pattern=“yyyy-mm-ddhh-mm-ss”) )
4、@JsonSerialize
此注释用于属性或getter方法,用于在序列化期间嵌入自定义代码。 例如,序列化双精度时,后面必须限制两位小数。
5、@JsonDeserialize
此注释用于属性或设置方法,可以在反序列化时嵌入自定义代码,如上面的@JsonSerialize
6,@Transient
@ [电子邮件保护]映射,ORM框架将忽略此属性;
如果属性不是数据库表中的字段映射,则必须将其标记为@Transient。 否则,ORM框架的默认注释为@Basic。
//指示数据库表中不存在此字段
@Transient
公共int get age () {
返回1 1;
}