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序列化和反序列化忽略字段操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • @KafkaListener 如何使用

    @KafkaListener 如何使用

    这篇文章主要介绍了@KafkaListener 如何使用,本文通过图文实例代码相结合给大家详细讲解,文末给大家介绍了kafka的消费者分区分配策略,需要的朋友可以参考下
    2023-02-02
  • 新手必备的IDEA常用设置总结

    新手必备的IDEA常用设置总结

    今天给大家总结了一些IDEA的常用设置,文中有非常详细的图文介绍,对正在学习使用IDEA的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • RocketMQ顺序消息的原理与特点

    RocketMQ顺序消息的原理与特点

    RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等,本篇我们了解如何实现顺序消息的原理与特点
    2023-02-02
  • Java判断当前日期是周几的方法汇总

    Java判断当前日期是周几的方法汇总

    在Java编程中,我们经常会遇到需要获取当前日期是周几的需求。根据国际惯例,一周通常是从周一开始,到周日结束,记作1至7,本文将介绍几种常用的Java方法,让你能够准确地判断当前日期是周几,感兴趣的朋友一起看看吧
    2024-03-03
  • Java多线程教程之如何利用Future实现携带结果的任务

    Java多线程教程之如何利用Future实现携带结果的任务

    Callable与Future两功能是Java 5版本中加入的,这篇文章主要给大家介绍了关于Java多线程教程之如何利用Future实现携带结果任务的相关资料,需要的朋友可以参考下
    2021-12-12
  • 分隔List集合,按指定大小,将集合分成多个的方法

    分隔List集合,按指定大小,将集合分成多个的方法

    下面小编就为大家带来一篇分隔List集合,按指定大小,将集合分成多个的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Java调用opencv IDEA环境配置的教程详解

    Java调用opencv IDEA环境配置的教程详解

    这篇文章主要为大家详细介绍了Java调用opencv IDEA环境配置的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码

    JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码

    这篇文章主要介绍了JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码,需要的朋友可以参考下
    2017-04-04
  • Java泛型常见面试题(面试必问)

    Java泛型常见面试题(面试必问)

    泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。java泛型知识点也是Java开发岗位必问的一个话题,今天小编就给大家普及下Java泛型常见面试题,感兴趣的朋友一起看看吧
    2021-06-06
  • idea指定启动参数、环境变量的过程

    idea指定启动参数、环境变量的过程

    这篇文章主要介绍了idea指定启动参数、环境变量的操作过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07

最新评论