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忽略类的属性字段相关推荐

  1. swagger2搭配knife4j 隐藏实体类的属性/字段

    需求:我想在接口文档上面隐藏不想展示的字段 如图所示,本人想隐藏students集合[红框],但是添加以下注解均无效[黄框] 网上说什么自定义注解然后覆盖,我看了下太麻烦了 于是翻阅官网,找到了可行方 ...

  2. 简单介绍实体类或对象序列化时,忽略为空属性的操作

    这篇文章主要介绍了实体类或对象序列化时,忽略为空属性的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 第一种,在配置文件配置 在application.xml直接 ...

  3. 实体类或对象序列化时,忽略为空属性

    第一种,在配置文件配置 在application.xml直接配置,这种方式是全局配置,所有返回给前端对象的属性为null或""都不进行序列化: spring: jackson:#实 ...

  4. 使用Jackson忽略JSON对象上的新字段[复制]

    本文翻译自:Ignoring new fields on JSON objects using Jackson [duplicate] This question already has an ans ...

  5. odoo13中的模型类(模型属性、字段属性、字段类型)

    目录 1.模型属性 2.字段类型 3.字段通用参数属性 1.模型属性 模型属性 解释 _name 模型名称.使用点表示法.规范命名带模块命名空间,格式:模块名.xxx.xxx.xxx: _descri ...

  6. (论坛答疑点滴)如何按照HashTable动态设定类的属性和字段?

    正好有人问这个,代码非常简单,最基本的应用,直接贴代码 using System; namespace Test {     /**//// <summary>     /// Class ...

  7. .NET Core(C#) 反射类的属性(PropertyInfo)、字段(FieldInfo)和方法(MethodInfo)相关操作扩展方法工具类

    本文主要介绍.NET Core(C#)中,使用反射进行类(class)的属性(PropertyInfo).字段(FieldInfo)和方法(MethodInfo)相关操作,通过扩展方法编写的工具类,以 ...

  8. Jackson的使用与创建Jackson工具类

    1.Jackson的使用 Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架.Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的 ...

  9. Jackson工具类

    记录下一个Jackson工具类,方便后续使用. pom引用 <properties><jackson.version>2.9.10</jackson.version> ...

最新文章

  1. JS服务器端开发基础篇(Array.slice方法和splice方法)
  2. LA3602DNA序列
  3. 岗位内推 | 微软亚洲研究院智能多媒体组招聘计算机视觉算法实习生
  4. 关于自定义可以点击的的布局
  5. bzoj 3675: [Apio2014]序列分割
  6. MQ产品比较-ActiveMQ-RocketMQ
  7. 项目QQ音乐开发记录
  8. c语言中删除有序数组中重复元素,去除有序列表中的重复元素
  9. redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...
  10. 苹果应用上架,一些信息的勾选(2017年4月27日)
  11. js 获取当前元素的父元素的父元素的id
  12. WORD如何一键转PPT
  13. 【嵌入式】Linux开发工具arm-linux-gcc安装及使用
  14. [PyTorch] 官网教程之神经网络
  15. tensorflow基础:tf.data.Dataset.from_tensor_slices() 与 tf.data.Dataset.from_generator()的异同
  16. Android进阶学习方法总结(内附阿里P7进阶学习全套资料)
  17. CAD绘图软件_常用指令
  18. for horner_霍纳法则(Horner Rule)
  19. node.js使用手册_权威的Node.js手册
  20. 利用mysql物理文件(*.ibd,*.frm)回复数据

热门文章

  1. 十问大数据到底为何物?
  2. C++(数据结构与算法):45---竞赛树/选择树(赢者树、输者树)
  3. FPGA开发之SRIO接口
  4. 笔记本电脑选购指南(不推荐具体品牌及型号)
  5. python脚本运行时网络异常_Python中异常重试的解决方案详解
  6. ICCV 2021|复杂场景目标检测——科大讯飞等提出X光安检场景下危险品检测基准(已开源)...
  7. 微擎(微赞)初入坑一(转自a_haoGG的博客)
  8. 电脑“为硬件保留的内存xG”的解决方案!
  9. 特权账号管理系统是什么?是堡垒机吗?
  10. Docker特权容器与capability