Jackson忽略类的属性字段
1.概述
使用Jackson 2.x将对象序列化为JSON时如何忽略某些字段。
当Jackson的默认值还不够,并且需要精确控制要序列化为JSON的内容时,有几种方法可以忽略属性。
2.忽略类级别的字段
可以使用@JsonIgnoreProperties批注并按名称指定字段,从而在类级别忽略特定字段:
@Data
@NoArgsConstructor
@JsonIgnoreProperties(value = { "intValue" })
public class MyFieldsDto {private String stringValue;private int intValue;private boolean booleanValue;}
@Testpublic void test18() throws IOException {ObjectMapper mapper = new ObjectMapper();MyFieldsDto myFieldsDto = new MyFieldsDto();String dtoAsString = mapper.writeValueAsString(myFieldsDto);System.out.println(dtoAsString);//{"stringValue":null,"booleanValue":false}}
3.在字段级别忽略字段
@Data
@NoArgsConstructor
public class MyFieldsDto {private String stringValue;private int intValue;@JsonIgnoreprivate boolean booleanValue;}
@Test
public void test19() throws IOException {ObjectMapper mapper = new ObjectMapper();MyFieldsDto myFieldsDto = new MyFieldsDto();String dtoAsString = mapper.writeValueAsString(myFieldsDto);System.out.println(dtoAsString);//{"stringValue":null,"intValue":0}
}
4.按类型忽略所有字段
最后,可以使用@JsonIgnoreType忽略指定类型的所有字段:
@JsonIgnoreType
public class SomeType { ... }
但是,很多时候,无法控制类本身。 在这种情况下,可以充分利用Jackson的mixins。
首先,要为忽略的类型定义一个MixIn,并使用@JsonIgnoreType对其进行注释:
@JsonIgnoreType
public class MyMixInForIgnoreType {}
@Data
@NoArgsConstructor
public class MyDtoWithSpecialField {private String[] stringValue;private Integer intValue;private Boolean booleanValue;
}
然后,在编码期间注册该mixin来替换(并忽略)所有String []类型:
@Testpublic void test21() throws IOException {ObjectMapper mapper = new ObjectMapper();mapper.addMixIn(String[].class, MyMixInForIgnoreType.class);MyDtoWithSpecialField dtoObject = new MyDtoWithSpecialField();dtoObject.setBooleanValue(true);String dtoAsString = mapper.writeValueAsString(dtoObject);System.out.println(dtoAsString);//{"intValue":null,"booleanValue":true}assertThat(dtoAsString, containsString("intValue"));assertThat(dtoAsString, containsString("booleanValue"));assertThat(dtoAsString, not(containsString("stringValue")));}
Jackson忽略类的属性字段相关推荐
- swagger2搭配knife4j 隐藏实体类的属性/字段
需求:我想在接口文档上面隐藏不想展示的字段 如图所示,本人想隐藏students集合[红框],但是添加以下注解均无效[黄框] 网上说什么自定义注解然后覆盖,我看了下太麻烦了 于是翻阅官网,找到了可行方 ...
- 简单介绍实体类或对象序列化时,忽略为空属性的操作
这篇文章主要介绍了实体类或对象序列化时,忽略为空属性的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 第一种,在配置文件配置 在application.xml直接 ...
- 实体类或对象序列化时,忽略为空属性
第一种,在配置文件配置 在application.xml直接配置,这种方式是全局配置,所有返回给前端对象的属性为null或""都不进行序列化: spring: jackson:#实 ...
- 使用Jackson忽略JSON对象上的新字段[复制]
本文翻译自:Ignoring new fields on JSON objects using Jackson [duplicate] This question already has an ans ...
- odoo13中的模型类(模型属性、字段属性、字段类型)
目录 1.模型属性 2.字段类型 3.字段通用参数属性 1.模型属性 模型属性 解释 _name 模型名称.使用点表示法.规范命名带模块命名空间,格式:模块名.xxx.xxx.xxx: _descri ...
- (论坛答疑点滴)如何按照HashTable动态设定类的属性和字段?
正好有人问这个,代码非常简单,最基本的应用,直接贴代码 using System; namespace Test { /**//// <summary> /// Class ...
- .NET Core(C#) 反射类的属性(PropertyInfo)、字段(FieldInfo)和方法(MethodInfo)相关操作扩展方法工具类
本文主要介绍.NET Core(C#)中,使用反射进行类(class)的属性(PropertyInfo).字段(FieldInfo)和方法(MethodInfo)相关操作,通过扩展方法编写的工具类,以 ...
- Jackson的使用与创建Jackson工具类
1.Jackson的使用 Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架.Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的 ...
- Jackson工具类
记录下一个Jackson工具类,方便后续使用. pom引用 <properties><jackson.version>2.9.10</jackson.version> ...
最新文章
- JS服务器端开发基础篇(Array.slice方法和splice方法)
- LA3602DNA序列
- 岗位内推 | 微软亚洲研究院智能多媒体组招聘计算机视觉算法实习生
- 关于自定义可以点击的的布局
- bzoj 3675: [Apio2014]序列分割
- MQ产品比较-ActiveMQ-RocketMQ
- 项目QQ音乐开发记录
- c语言中删除有序数组中重复元素,去除有序列表中的重复元素
- redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...
- 苹果应用上架,一些信息的勾选(2017年4月27日)
- js 获取当前元素的父元素的父元素的id
- WORD如何一键转PPT
- 【嵌入式】Linux开发工具arm-linux-gcc安装及使用
- [PyTorch] 官网教程之神经网络
- tensorflow基础:tf.data.Dataset.from_tensor_slices() 与 tf.data.Dataset.from_generator()的异同
- Android进阶学习方法总结(内附阿里P7进阶学习全套资料)
- CAD绘图软件_常用指令
- for horner_霍纳法则(Horner Rule)
- node.js使用手册_权威的Node.js手册
- 利用mysql物理文件(*.ibd,*.frm)回复数据
热门文章
- 十问大数据到底为何物?
- C++(数据结构与算法):45---竞赛树/选择树(赢者树、输者树)
- FPGA开发之SRIO接口
- 笔记本电脑选购指南(不推荐具体品牌及型号)
- python脚本运行时网络异常_Python中异常重试的解决方案详解
- ICCV 2021|复杂场景目标检测——科大讯飞等提出X光安检场景下危险品检测基准(已开源)...
- 微擎(微赞)初入坑一(转自a_haoGG的博客)
- 电脑“为硬件保留的内存xG”的解决方案!
- 特权账号管理系统是什么?是堡垒机吗?
- Docker特权容器与capability