zoukankan      html  css  js  c++  java
  • @JsonIgnore等

    作用:在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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    jvm 虚拟机参数_新生代内存分配
    jvm 虚拟机参数_堆内存分配
    Xshell 安装 Xftp
    使用 Xshell 连接 linux 系统
    linux 常用命令
    java JSON 和 Object 相互转换
    vsftp实现只能上传不能下载、删除权限配置
    从返回的HTTP Header信息中隐藏Apache的版本号及PHP的X-Powered-By信息
    在SecureCRT中无需输入密码登录Linux主机
    ssh 设置私钥实现两台linux主机无密码访问
  • 原文地址:https://www.cnblogs.com/dianzan/p/11171351.html
Copyright © 2011-2022 走看看