Jackson序列化和反序列化忽略字段操作

 更新时间:2020年09月28日 09:10:28   作者:情非得已1991  
这篇文章主要介绍了Jackson序列化和反序列化忽略字段操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一、设置Jackson序列化时只包含不为空的字段

new ObjectMapper().setSerializationInclusion(Include.NON_NULL);

二、设置在反序列化时忽略在JSON字符串中存在,而在Java中不存在的属性

new ObjectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

三、Jackson序列化时忽略字段的方式

1、方式一:FilterProvider

a)在需要忽略某些字段的bean上添加@JsonFilter("fieldFilter")

b)ObjectMapper设置过滤器

  FilterProvider filterProvider = new SimpleFilterProvider();

  SimpleBeanPropertyFilter fieldFilter = SimpleBeanPropertyFilter().serializeAllExcept("name");
  filterProvider.addFilter("fieldFilter");
  new ObjectMapper.setFilters(filterProvider );

2、方式二:使用@JsonIgnore

在需要忽略的字段上标注注解@JsonIgnore,在序列化时即可忽略该字段

补充知识:Jackson 序列化对象成 JSON 字符串,忽略部分字段(属性)

1、属性上 加 @JsonIgnore

这种方式作用于全局,只要是有这个对象的序列化,就会忽略注解过的这部分字段。

2、上面那种方式需要在 bean 上加注解,作用于全局,但是有的时候,我们可能不需要在所有情况下都忽略这个对象的这些字段,下面这种方式可以支持定制过滤方式。

public final class JsonFilterUtil {

  /**
   * 添加过滤的字段,这里过滤的是 ThinActivityInfo 这个 bean 下的 
   * "startAt", "expiredAt", "extra" 三个字段
   */
  public static void addFilterForMapper(ObjectMapper mapper) {
    SimpleBeanPropertyFilter fieldFilter = SimpleBeanPropertyFilter.serializeAllExcept(
        Sets.newHashSet("startAt", "expiredAt", "extra"));
    SimpleFilterProvider filterProvider = new SimpleFilterProvider().addFilter("fieldFilter", fieldFilter);
    mapper.setFilterProvider(filterProvider).addMixIn(ThinActivityInfo.class, FieldFilterMixIn.class);
  }

  /**
   * 定义一个类或接口
   */
  @JsonFilter("fieldFilter")
  interface FieldFilterMixIn{
  }
}

以上这篇Jackson序列化和反序列化忽略字段操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring @ComponentScan注解扫描组件原理

    Spring @ComponentScan注解扫描组件原理

    这篇文章主要介绍了Spring @ComponentScan自动扫描组件使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 解决java字符串转换成时间Unparseable date出错的问题

    解决java字符串转换成时间Unparseable date出错的问题

    这篇文章主要介绍了解决java字符串转换成时间Unparseable date出错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Springboot与vue实现文件导入方法具体介绍

    Springboot与vue实现文件导入方法具体介绍

    文件导入时大多数项目无法回避的问题,这两天深入学习了文件导入,在这里进行记录,使用到的技术是Springboot+Vue,前端组件使用el-upload
    2023-02-02
  • SpringBoot源码 PropertySource解析

    SpringBoot源码 PropertySource解析

    PropertySource是spring中对于键值属性的一种抽象,主要是name和sourcePropertyResolver是对PropertySource提供对外的统一数据处理,对于占位符的处理委托于PropertyPlaceholderHelper,对Springboot 源码 PropertySource相关知识感兴趣的朋友一起看看吧
    2023-01-01
  • 解析Java的设计模式编程之解释器模式的运用

    解析Java的设计模式编程之解释器模式的运用

    这篇文章主要介绍了解析Java的设计模式编程之解释器模式的运用,文中对解释器模式的优缺点及适用场景作出了分析,需要的朋友可以参考下
    2016-02-02
  • Elasticsearch 自动重启脚本创建实现

    Elasticsearch 自动重启脚本创建实现

    这篇文章主要为大家介绍了Elasticsearch 自动重启脚本创建实现详解分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • mybatis批量插入返回主键失败的坑及解决

    mybatis批量插入返回主键失败的坑及解决

    这篇文章主要介绍了mybatis批量插入返回主键失败的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • java pdf加水印的方法

    java pdf加水印的方法

    这篇文章主要为大家详细介绍了java pdf加水印的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java判断object对象为空(包括null ,““)的方法

    Java判断object对象为空(包括null ,““)的方法

    这篇文章主要介绍了Java判断对象是否为空(包括null ,“”)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Java 中IO流字符流详解及实例

    Java 中IO流字符流详解及实例

    这篇文章主要介绍了Java 中IO流字符流详解及实例的相关资料,需要的朋友可以参考下
    2017-05-05

最新评论