Jackson序列化和反序列化忽略字段操作
作者:情非得已1991 发布时间:2022-08-29 14:01:14
标签: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{
}
}
来源:https://blog.csdn.net/yu870646595/article/details/78523402


猜你喜欢
- 1、String类1.1两种对象实例化方式对于String在之前已经学习过了基本使用,就是表示字符串,那么当时使用的形式采取了直接赋值:pu
- 需求:学生输入姓名和语文、数学、英语,编程求出总分和平均分,并在屏幕上显示XX的总分和平均分using System;using Syste
- 前言我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到
- Java 中的 CyclicBarrier 是一种同步工具,它可以让多个线程在一个屏障处等待,直到所有线程都到达该屏障处后,才能继续执行。C
- 一、问题描述换了一台电脑,重新进行idea安装配置。然后打开原来的项目结果引入spring-boot-maven-plugin出现爆红,而且
- 本文讲述了Java实现画线、矩形、椭圆、字符串功能的实例代码。分享给大家供大家参考,具体如下:import java.awt.Frame;
- 一、什么是ASMASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,
- 一.工程文件二.Main.java主函数,实现类package ui;//主函数实现public class Main { &
- C语言fchdir()函数:改变当前工作目录头文件:#include <unistd.h>定义函数:int fchdir(int
- 前言Android 8.0系统更新之后,app的更新将不再像之前的系统版本一样能够直接下载安装包之后直接安装(以前安装未知来源应用的时候一般
- 缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率
- MongoDBMongoDB作为一种NoSQL数据库产品,其实已经非常著名了。去年,由于MongoDB安全认证的薄弱,上万家公司中招。虽然是
- iText下载页面: http://sourceforge.net/projects/itext/files/1.创建简单的PDF文件pac
- 前言在上一篇文章中,我们分析了Spring中Bean的实例化过程,在结尾我们知道了虽然bean的实例化完成了,但是其中的属性还没有被注入,今
- 1.委托delegate委托delegate也是一种类型,在任何可以声明类的地方都可以声明委托,它将方法当做另一个方法的参数进行传递,这样就
- 该方法把该字符串转换成一个新的字符数组。 String str="abcdefg"; char a[]; a=str.t
- 之前学习oracle,简单的认为数据库只存在服务器端,学习安卓之后才发现原来android和Ios本身是“携带”数据库的——SQ
- 在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。结构体是用来代表
- 1.工作原理(算法思路)给定一个待排序数组,找到数组中最小的那个元素如果最小元素不是待排序数组的第一个元素,则将其和第一个元素互换在剩下的元
- 目前网上流行着很多对“时间对话框TimePickerDialog”的讲解文章,但感觉都不是很详细。所以浣熊在这里详细对该方面的知识进行介绍,