作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性。

场景模拟:

需要把一个List<HistoryOrderBean>转换成json格式的数据传递给前台。但实体类中基本属性字段的值都存储在快照属性字段中。此时我可以在业务层中做处理,把快照属性字段的值赋给实体类中对应的基本属性字段。最后,我希望返回的json数据中不包含这两个快照字段,那么在实体类中快照属性上加注解@JsonIgnore,那么最后返回的json数据,将不会包含goodsInfo和extendsInfo两个属性值。

public class HistoryOrderBean {

    //基本属性字段
private String insurantName;
private String insuranceName;
private String insurancePrice;
private String insurancePicture;
private String insuranceLimit; //快照属性字段
@JsonIgnore
private String goodsInfo; //快照基本信息
@JsonIgnore
private String extendsInfo; //快照扩展属性信息 }

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

Jackson相关:
使用Jackson相关的注解时一定要注意自己定义的属性命名是否规范。
命名不规范时会失去效果。(例如Ename ,Eage 为不规范命名。“nameE”,“ageE”为规范命名)我在此处掉坑半个小时。至于命名规范,大家自己搜索。其实不要太奇葩的命名都是可以得。

如果使用@JsonIgnore注解不起效时请注意一下你的属性名字是否规范

1、@JsonIgnoreProperties

此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。

写法将此标签加在model 类的类名上 ,可以多个属性也可以单个属性

//生成json时将name和age属性过滤
@JsonIgnoreProperties({"name"},{"age"})
public class user {
private String name;
private int age;
}

public class HistoryOrderBean {

    //基本属性字段
private String insurantName;
private String insuranceName;
private String insurancePrice;
private String insurancePicture;
private String insuranceLimit; //快照属性字段
@JsonIgnore
private String goodsInfo; //快照基本信息
@JsonIgnore
private String extendsInfo; //快照扩展属性信息 }

2、@JsonIgnore

此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。

生成json 时不生成age 属性

public class user {
private String name;
@JsonIgnore
private int age;
}

3、@JsonFormat

此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)

4、@JsonSerialize

此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。

5、@JsonDeserialize

此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize

6、@Transient

@[email protected]�射,ORM框架将忽略该属性;
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic;

//表示该字段在数据库表中没有

@Transient
public int getAge() {
 return 1+1;
}
---------------------
作者:双斜杠少年
来源:CSDN
原文:https://blog.csdn.net/u012373815/article/details/52266609
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. C# 获取 新浪微博登录之后的 完整的Cookie
  2. 让Bootstrap轮播插件carousel支持左右滑动手势的三种方法
  3. Tomcat 6 --- 你很少使用的安全管理SecurityManager
  4. 用JS来控制 div的高度随浏览器变化而变化
  5. C# 匿名方法 1027
  6. 获取input标签的所有属性
  7. 第八届郑州轻工业学院ACM(程序设计大赛)校内预选赛
  8. Mac经常使用快捷键
  9. hdu2612(bfs)
  10. Hibernate_Validator学习分享
  11. UEP-树和表
  12. Go 语言类型转换
  13. paypal的IPN机制
  14. C#2.0导航
  15. 【CH6801】棋盘覆盖
  16. nmcli工具详解
  17. JAVA程序员常用英语
  18. BZOJ5467 PKUWC2018Slay the Spire(动态规划)
  19. Java计算两个字符串日期之间的天数差
  20. 双线机房双网卡双ip 路由设置

热门文章

  1. C++ STL String学习 (待续)
  2. thinkphp5分页查询paginate()传递参数
  3. 装饰器中functools的用处
  4. 植物大战僵尸:查找植物叠加种植CALL
  5. Codeforces 1097F. Alex and a TV Show
  6. ButterKnife8.5.1最新版本使用详细步骤
  7. Markdown: Syntax Text
  8. Ubuntu18.04通过网线共享网络
  9. 简单的flask对象
  10. vue-element-admin 之改变登录界面input的光标颜色