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

@JsonIgnore等的更多相关文章

  1. EF jsonignore

    页面单独指定不循环引用 [JsonIgnore] Newtonsoft.Json.JsonSerializerSettings jsSettings = new Newtonsoft.Json.Jso ...

  2. webapi修改tt模板给字段添加JsonIgnore特性解决转换json循环引用问题

    0.问题描述 EF生成的model带有导航属性,则json序列化会报循环引用错误,尝试如下 protected void Application_Start() { GlobalConfigurati ...

  3. 【JSON 注解】JSON循环引用1-----Jackson常用注解介绍 eq:@JsonIgnore

    循环引用:实体A与实体B有关系,A中有B作为字段,B中有A作为一个字段.查询A对象后,将A对象转化为JSON格式数据时,会因为序列化过程中导致A中有B字段,B字段中又有A,这样就引起了循环引用的问题! ...

  4. @jsonignore的作用

    作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 如下: package com.hzboy.orm; import java.util.List; impor ...

  5. Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释

    @jsonignore的作用作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. http://www.cnblogs.com/toSeeMyDream/p/443 ...

  6. json.net 比jsonIgnore 更好的方法 修改源码

    关于 JsonIgnore  问题, EF T4 模板 中 存在主外键关系 namespace WindowsFormsApplication1{    using System;    using ...

  7. JsonIgnore注解不起作用的解决办法

    一开始在属性上注解了JsonIgnore以为就不会序列化了,结果还是有这个属性,看来是没有起作用啊 [JsonIgnore] public List<int> SubjectAndSubS ...

  8. 关于@JsonIgnore的理解

    首先:@JsonIgnore是一个能够在后端发送给前端数据的时候对后端发送出的json字符串能够发挥作用的一个注解 如果比如user表,你在password这个属性上添加@JsonIgnore,就会s ...

  9. @JsonIgnore注解可以实现不返回前端字段

    import com.fasterxml.jackson.annotation.JsonIgnore; /** * 密码 */ @JsonIgnore private String password;

  10. jackson中@JsonProperty、@JsonIgnore等常用注解总结

    本文为博主原创,未经允许不得转载: 最近用的比较多,把json相关的知识点都总结一下,jackjson的注解使用比较频繁, jackson的maven依赖 <dependency> < ...

随机推荐

  1. Ubuntu18突然卡死解决方法

    emmmm 1.Ctrl+Alt+F2/F3/F4/F5/F6     F2-6随便选一个都可以 2.进入tty终端后先输入用户名和密码(记得小键盘会自动

  2. ecshop二次开发笔记

    1. robots.txt 爬虫协议 网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取. 2. 入口文件 index.php 3. 目录结构分析 admin 后台 api 接口 ...

  3. golang之工厂模式

    说明: golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题 如果包里面的结构体变量首字母小写,引入后,不能直接使用,可以工厂模式解决: ch1.go package ch1 type ...

  4. Skywalking的增强与拦截机制

    整理自架构经理(汤哥)的分享 字节增强条件匹配 在 skywalking 中实现很多基于 byte-buddy 的关于链式匹配查询的实现, 代码如下所示: public abstract class ...

  5. c# ServiceStack web 搭建

    用的是4.5的.net版本 构建model /// <summary> /// 通过id获取资料 /// </summary> //[Route("/GetStude ...

  6. loj 2292「THUSC 2016」成绩单

    loj 看着就很区间dp,所以考虑求\(f_{i,j}\)表示区间\([i,j]\)的答案.注意到贡献答案的方式是每次选一个连续段,拿走后剩下的段拼起来继续段,所以转移就考虑从最后一次选的方法转移过来 ...

  7. AJAX中所谓的异步

    async javascript and xml 异步的js和xml 在AJAX中的异步不是我们所理解的同步异步编程,而泛指“局部刷新”,但是我们以后的AJAX请求尽可能异步请求数据(因为异步数据获取 ...

  8. 关于页面数据未保存改变路由(beforeunload,beforeRouteLeave)

    一下内容为笔者个人理解,如有出入还请大佬指出不胜感激 页面有数据未保存,用户离开页面分为两种 1 . 直接关闭浏览器标签 或者点击浏览器后退按钮 离开当前页面 2. 在页面内改变路由,或则刷新页面(不 ...

  9. 忘记root密码,修改方法

    Linux的root密码修改不像Windows的密码修改找回,Windows的登录密码忘记需要介入工具进行解决.CentOS6和CentOS7的密码方法也是不一样的,具体如下: 首先是CentOS 6 ...

  10. 转:Java Web 项目发布到Tomcat中三种部署方法

    首先整理项目文件,文件内包含jsp.js等和class编译后的文件及lib包,如: 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:   ...